Command Line One-Liner

Hier sammle ich kleine nützliche Einzeiler für die Kommendozeile (= “Command line one-liner”):

((Work in progress…))

Squid Access-Log mit Uhrzeiten versehen:

grep -h 'suchstring' /var/log/squid3/access.log* | \
    perl -p -e 's/^([0-9]*)/"[".localtime($1)."]"/e'

Interpretiert die am Anfang jeder Zeile stehenden Ziffern als Unix-Zeitstempel und konvertiert die in ein lesbares Format.
Beim grep das -h nicht vergessen – das führt dazu, dass der Dateiname nicht mit ausgegeben wird, was das Perl-Skripchen durcheinander bringen würde.

Eigene IP via Kommandozeile herausfinden

dig +short myip.opendns.com @resolver1.opendns.com

ggf. dig installieren mit apt-get install dnsutils o.ä.

Oder: (viel kürzer – und leichter zu merken)

curl ifconfig.co

OpenWrt (oder LEDE): Alle Packages upgraden

opkg list-upgradable | awk '{ print $1; }' | xargs opkg upgrade

Neuestes File im Dateibaum finden

find . -type f -printf "%T@ %p\n" | sort -n | cut -d' ' -f 2- | tail -n 1 | xargs -d'\n' ls -la

(s.a. hier).

Docker

s.a. hier

Docker Images und Container aufräumen

docker ps -aqf status=exited | xargs docker rm
docker images -qf dangling=true | xargs docker rmi

Docker-Umgebungsvariable löschen

…damit man nach Verwendung von docker-machine wieder auf den lokalen docker-Dämon zugreift:

eval $(set | grep DOCKER | gawk -F '=' '{ print $1; }' | xargs echo unset)

Speicherbelegung der Docker-Container ausgeben

…sortiert nach Größe:

docker stats --no-stream $(docker ps --format "{{.Names}}") | sed 's/\.[0-9]*\([kGM]i*B \)/\1/' | sort -h -k 4

Geänderte Festplattengröße erkennen

echo 1 > /sys/block/sda/device/rescan

Partition-Table neu einlesen

partprobe /dev/sda

Disk Image vergrößern

Nicht mit dd sondern mit truncate. Geht auch auf remote smb-Laufwerken.

truncate -s 40G /srv/storage/crypted-disk.dd

(Vgl. Kommentar unter Verschlüsselte Partition automatisch mounten.)

JPG Bilder anhand EXIF-Datum umbenennen

exiftool '-filename<DateTimeOriginal' -d %Y-%m-%d_%H-%M-%S%%-c.%%le .

-> Dann heißen sie z.B. “2020-02-01_17-09-58.jpg”.

Anschließend kann man sie z.B. nach Datum durchnummerieren:

exiftool -filename='%03c.jpg' .

-> Dann heißen sie “001.jpg”…

(s.a. hier im nerdblog und hier)

Leerzeichen aus Dateinamen im ganze Verzeichnisbaum entfernen

find . -name '* *' | while read file ; do mv -- "$file" "${file// /_}" ; done

Alle PDFs im Verzeichnisbaum aneinanderhängen (concatenate)

Ggf. vorher die Leerzeichen entfernen (siehe vorheriger Abschnitt).

pdftk $(find . -type f -name '*.pdf' | sort) cat output all.pdf

Mit Ansible sofort ein adhoc Command an alle Hosts schicken

ansible all -m shell -u root -a "who am i"

Statt “who am i” ist natürlich das gewünsche Kommando einzusetzen.

Digital Ocean: Unbenutzte Volumes löschen

doctl compute volume list -o json \
    | jq -r '.[] | select(.droplet_ids | length == 0) | select(.name | startswith("pvc-")) | .id' \
    | xargs -L 1 --no-run-if-empty doctl compute volume delete --force

SSL/TLS Zertifikat-Gültigkeit einer https-Seite überprüfen

openssl s_client -connect nerdblog.steinkopf.net:443 2>/dev/null | openssl x509 -noout -dates

Mehr dazu hier.