Bash Magic

Alle Befehle echoen

set -x oder in Script einfach #!/bin/bash -x

Cert-Ablaufdatum

DOMAIN=example.com
echo | openssl s_client -showcerts -servername $DOMAIN -connect ${DOMAIN}:443 2>/dev/null | openssl x509 -inform pem -noout -text | grep 'Not After' | sed 's/.*: //' 

SSH-Keys easy von einem Server auf den anderen kopieren

`ssh root@server1.com grep shah .ssh/authorized_keys | ssh server2.com tee -a .ssh/authorized_keys

Alle Domains aus BIND-Config lesen

Mit Vorsicht zu genießen! Deckt vermutlich nicht alle edge cases ab. cat /etc/bind/db.external/db.example.com.soa | sed -e '/^[[a-z0-9*]/!d' | awk -F ' ' '{ print $1 }'

Alle Rails-Deploys löschen, die älter sind als ein Monat

Beispiel example.com:

cd /var/www/app/shared/system/app-updates/production
find . -type d -maxdepth 1 ! -name "2019-08*" -exec echo rm -rf {} +

Monat vorher anpassen zu Monat von letztem Deploy mit mehreren Ordnern (könnte man automatisieren, aber schadet nicht da selbst ein Auge drauf zu haben). Wenn Ergebnis ok aussieht, das echo entfernen.

snippets

now="$(date +%Y%m%d_%H%M%S%z)"

brace expansion

Mit Braces und komma wird das Dingen expandiert. ABER nicht mit space dazwischen, das macht kaputto! dig example.{com,net} wird zu dig example.com example.net

Ausrechnen, wieviel Text die Notizen haben

cd ~/notes/ && echo "Deine Notizen haben $(find . -name '*.md' -exec cat {} + | sed '/^[[:space:]]*$/d' | wc -l) Zeilen und $(find . -name '*.md' -exec cat {} + | sed '/^[[:space:]]*$/d' | wc -c) Zeichen. Wahnsinn!"