# while true; do date | tr '\n' '-' | sed -e 's/-/ --- /'; wget http://testsite.com/fancy.pdf -O /dev/null 2>&1 | grep saved | awk -F"[()]" '{print $2}'; sleep 1s; done;
Thu Oct 30 15:18:26 PDT 2014 --- 1.25 MB/s
Thu Oct 30 15:18:28 PDT 2014 --- 1.20 MB/s
Thu Oct 30 15:18:29 PDT 2014 --- 958.95 KB/s
Thu Oct 30 15:18:31 PDT 2014 --- 1.36 MB/s
Thu Oct 30 15:18:32 PDT 2014 --- 873.98 KB/s
Thu Oct 30 15:18:33 PDT 2014 --- 1.38 MB/s
Thu Oct 30 15:18:35 PDT 2014 --- 261.90 KB/s
Thu Oct 30 15:18:37 PDT 2014 --- 1.38 MB/s
Thu Oct 30 15:18:38 PDT 2014 --- 360.14 KB/s
Thu Oct 30 15:18:40 PDT 2014 --- 1.37 MB/s
Thu Oct 30 15:18:42 PDT 2014 --- 427.06 KB/s
Thu Oct 30 15:18:44 PDT 2014 --- 1.37 MB/s
Thu Oct 30 15:18:45 PDT 2014 --- 397.54 KB/s
git show commits between tags
Instead of making our developers use annotated tags, I just use the git log as a reference. This shows all the commits (minus the trivial ones) between a set number of tags back.
# tagsback=2; tagdiff=$(git tag | tail -$(($tagsback+1)) |tr '\n' ' '| awk '{print $1"..."$NF}'); echo -e "COMMITS BETWEEN $tagdiff\n"; git log --pretty=oneline $tagdiff | cut -d " " -f 2- | grep -v ^Merge
COMMITS BETWEEN 2014092401...2014102101
commit message 1
commit message 2
fixed some bug
Refs #404885
some other message
#
mysqladmin change root password
mysqladmin -u root -p password 'newstrongpassword'
show kernel boot paramaters on running system
How did we boot?
# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.13.0-35-generic root=UUID=a2081a7a-23ac-4aaa-9a42-3fafd21937c4 ro nomdmonddf nomdmonisw nomdmonddf nomdmonisw
Vyatta monitor and log NAT translation
Logging to record NAT translations. This might be helpful for finding users using bit torrent (along with tshark), or for watching what IPs are connecting to what external services, and when.
while true; do d=`date +%Y%m%d%H%M`; show nat translations detail | grep -v Pre-NAT | paste - - | sort -nk1 >nats.$d.log; sleep 5m; done;
# tail -1 nats.201408261250.log
a.a.a.a:21845 z.z.z.z:443 b.b.b.b:21845 z.z.z.z:443 tcp: snat: a.a.a.a ==> b.b.b.b timeout: 42 use: 1
convert RSA key for apache to p12 key for Exchange 2010
Needed to do this to use a wildcard cert (GoDaddy) (CSR/key generated by openssl), on a new exchange 2010 deployment
openssl pkcs12 -export -certfile fordodone.com.crt -inkey fordodone.com.key -clcerts -out fordodone.com.key.p12
When importing to certificates, it complains that it doesn’t have any content, but after certutil repair store it seems to work. No time, movin on.
mount FreeBSD file system on Debian
# apt-get install ufsutils
# mkdir /mnt/freebsd && mount -t ufs -o ufstype=ufs2,ro /dev/sda2 /mnt/freebsd
linux count how many cores a server has
You can see how many cores (virtual) that a server has:
# grep -c ^core /proc/cpuinfo
16
This physical machine has 8 cores, but the kernel sees 16 because of hyperthreading hardware setting.
Using find
to act on files is very useful, but if the files that are found need different actions based on their filetype, it gets a bit trickier. For example there are some log files foo.log but after 10 days they get compressed to foo.log.gz. So you are finding regular text files, as well as gzipped
text files. Extend your find with an -exec
and a bash
shell to determine what file extension it is, and to run the appropriate grep
or zgrep
based on that. Then run it through awk
or whatever else to parse out what you need.
# find . -type f -name 'foo.log*' -exec bash -c 'if [[ $0 =~ .log$ ]]; then grep foobar $0; elif [[ $0 =~ .log.gz$ ]]; then zgrep foobar $0; fi' {} \; | awk '{if(/typea/)a++; if(/typeb/)b++; tot++} END {print "typea: "a" - "a*100/tot"%"; print "typeb: "b" - "b*100/tot"%"; print "typec: "tot-(a+b)" - "(tot-(a+b))*100/tot"%"; print "total: "tot;}'
typea: 5301 - 67.4771%
typeb: 2539 - 32.3192%
typec: 16 - 0.203666%
total: 7856
find and search for string in gzipped and text logs
find logs dating back 3 weeks, if they are gzipped use zgrep, if they are a regular text log use grep, if they aren’t a log do nothing, search for the string in the found log file
# find /mnt/toaster1/logs/app_logs/application1/2014 -type f -mtime -21 -exec bash -c 'if [[ $0 == *.log ]]; then g=grep; elif [[ $0 == *.gz ]]; then g=zgrep; else g=:; fi; $g "foostring" $0' {} \;