Skip to content

Instantly share code, notes, and snippets.

@RickyCook
Last active August 11, 2016 11:31
Show Gist options
  • Save RickyCook/6819878 to your computer and use it in GitHub Desktop.
Save RickyCook/6819878 to your computer and use it in GitHub Desktop.
Kick arse console-isms

Wireshark over SSH: http://www.commandlinefu.com/commands/view/4373/analyze-traffic-remotely-over-ssh-w-wireshark

ssh <host> sudo tcpdump -U -s0 -w - 'not port 22' | wireshark -k -i -

Expand an FS image: truncate --size <size>G <file>

Get an APT key: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <key>

Docker aware ps axu:

(export CONTAINER='<container id>'; ps -axo user,pid,pcpu,vsz,rss,tty,stat,start_time,time,command,cgroup|awk "(NR==1 || /docker-$CONTAINER/) , sub(FS \$NF,x)")

Env vars set by Forklift:

forklift -- env | awk '{split($0, arr, "="); if (!(arr[1] in ENVIRON)) print arr[1]"="arr[2]}'

Random string: openssl rand -base64 <length>

Get CA cert: openssl x509 -in <(openssl s_client -connect <ip:port> -prexit 2>/dev/null)

Filtered proc list, with V.Size:

ps ax -O 'vsz' | awk '($0 ~ /<PROCESS NAME>/) && ($0 !~ /awk/){$1=$3=$4=$5=""; print $0}'

Letsencrypt manual cert on OSX: letsencrypt --logs-dir ~ --config-dir ~ --work-dir ~ certonly --manual -d <domain>

Export 60FPS video at 10 FPS into a scaled down, 10 second GIF:

ffmpeg -i <name>.mov -t 10 -r 10 -filter:v 'setpts=6.0*PTS, scale=270:480' <name>.gif

Export live photo to 50% sized GIF:

To export the live photo, import into Photos for Mac, then File -> Export -> Unmodified original. This will give you a JPG and a MOV in the directory you choose, then:

ffmpeg -i <name>.mov -filter:v 'scale=iw/2:ih/2' <name>.gif

Current branch (for scripts): git rev-parse --abbrev-ref HEAD

Change DB objects owner:

export db="<db>"
export own="<owner>"
for tbl in `psql -qAt -c "select tablename from pg_tables where schemaname = 'public';" $db` ; do  psql -c "alter table $tbl owner to $own" $db ; done
for tbl in `psql -qAt -c "select sequence_name from information_schema.sequences where sequence_schema = 'public';" $db` ; do  psql -c "alter table $tbl owner to $own" $db ; done
for tbl in `psql -qAt -c "select table_name from information_schema.views where table_schema = 'public';" $db` ; do  psql -c "alter table $tbl owner to $own" $db ; done

XPath select if exist:

SELECT docid, pgxml_xpath(xml, 'string(//export_to/servicelink/@id)') FROM final_service WHERE pgxml_xpath(xml, '//export_to/servicelink') != '' LIMIT 1;

Transparently SSH through a jumpbox. Keys are all stored locally:

Host foo-host1
	HostName 192.168.1.2  # Internal range
	IdentityFile ~/.ssh/id_rsa_1
Host foo-host2
	HostName 192.168.1.3
	IdentityFile ~/.ssh/id_rsa_2
Host foo-*
	User ec2-user
	ProxyCommand ssh -W %h:%p rickycook@jumpbox.example.com
	ServerAliveInterval 30  # Not necessary, but useful

Same as above, but with a double jump:

Host foo-inner-host1
	HostName 192.168.2.2
	IdentityFile ~/.ssh/id_rsa_1
Host foo-inner-*
    ProxyCommand ssh -W %h:%p foo-jumpbox-inner
Host foo-jumpbox-inner
    HostName 192.168.2.1
    IdentityFile ~/.ssh/id_rsa_inner
Host foo-*
	User ec2-user
	ProxyCommand ssh -W %h:%p rickycook@jumpbox.example.com

Rsync to root files. Must have NOPASSWD setup and requiretty option off (on by default on RH distros):

rsync --rsync-path='sudo rsync'  ./file remote:/root/owned/file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment