bash
tmux statt screen
In RHEL8 ist screen nicht mehr enthalten und ein Umstieg auf tmux wird empfohlen.
tmux | screen |
Strg+B d | Strg+A d |
tmux attach | screen -r |
openssl nameopt
OpenSSL unterstützt eine nette Option, falls man den Output in einem Script weiterverarbeiten will.
Hier die normale Ausgabe:
openssl x509 -in test.cer -noout -text
Certificate: Data: Version: 3 (0x2) Serial Number: 55:0d:00:d6:79:bf:17:7b Signature Algorithm: sha256WithRSAEncryption Issuer: C = US, O = Google Trust Services, CN = Google Internet Authority G3 Validity Not Before: Nov 27 14:02:00 2018 GMT Not After : Feb 19 14:02:00 2019 GMT Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.google.com
Und hier die Multiline Ausgabe:
openssl x509 -in test.cer -noout -text -nameopt multiline
Certificate: Data: Version: 3 (0x2) Serial Number: 55:0d:00:d6:79:bf:17:7b Signature Algorithm: sha256WithRSAEncryption Issuer: countryName = US organizationName = Google Trust Services commonName = Google Internet Authority G3 Validity Not Before: Nov 27 14:02:00 2018 GMT Not After : Feb 19 14:02:00 2019 GMT Subject: countryName = US stateOrProvinceName = California localityName = Mountain View organizationName = Google LLC commonName = *.google.com
Zu welchem Paket gehört eine Datei
Wie finde ich schnell raus, zu welchem Paket eine Datei gehört?
dpkg -S $(which dig)
Ubuntu 18.10 Cosmic Cuttlefish
Ubuntu 18.10 Cosmic Cuttlefish und die Hostname Umbenennung
Eben das neue Ubuntu aufgesetzt. In einer Virtual Box. Aber eigentlich brauch ich gleich zwei solche Maschinen. Also was liegt näher als die VM zu klonen. Geht ja einfach, sogar eine neue MAC Adresse wird generiert. Jetzt noch schnell den zweiten Server umbenannt in /etc/hostname -> reboot -> hostname ist wieder der von Maschine 1.
Suchen, googlen, setzen mit hostname command. Reboot. Und immer wieder zurück auf dem alten Hostname. Was ist da los Ubuntu?
Es finden sich erste Hinweise dass das an cloud-init liegt. Was macht das mit meinem hostname, bitteschön? Auch DHCP wird nicht frisch geholt, aber das ist eine andere Geschichte…
/var/lib/cloud/instances/3f1ebbef-73c0-49db-9207-fde1dce2b8f4/cloud-config.txt
Exakt hier kann man den hostnamen ändern. Reboot und es wurde übernommen!
Update: Einen Reboot später -> wieder der alte Hostname!
Update: Um Ubuntu zu klonen und umzubenennen muss man diesen cloud configuration service abändern:
/etc/cloud/cloud.cfg
# This will cause the set+update hostname module to not operate (if true) preserve_hostname: true
grep binary file
Binary file (standard input) matches
-a | --text Process a binary file as if it were text; this is equivalent to the ‘--binary-files=text’ option.
JPEG Dateierweiterung erzeugen
Einen Haufen Files im LOST Ordner. Ohne erweiterung. Aber fast alles Fotos…
Bitte einmal mit Mobaxterm und der Bash auf .jpg Umbenennen:
ls -1 | while read LINE; do mv $LINE $LINE.jpg; done
Multi Command Readline
Das kann nerven: Man will eine Liste mit DNS Einträgen überprüfen. Was aber wenn es gar keinen Eintrag gibt? Meist ist es nicht akzeptabel, wenn die Zeile dann einfach weggelassen wird. Also muss man aus dem üblichen Einzeiler eine ganze Schleife basteln, die auch dann eine Ausgabe liefert, wenn dig keine mehr Produziert.
while read LINE do { echo -n "$LINE " dig SOA $LINE +short } done < $INPUTFILE
awk print last columns
Aus einer Liste die letzten beiden Spalten aussgeben. Der Input ist getrennt mit „.“, also zum Beispiel Domainnamen und man will nur mehr Top Level und Second Level haben, nicht aber die ganzen Sub Levels.
$LISTE und $OUTPUT sind Dateinamen.
awk -F"." '{print $(NF-1)"."$NF}' < $LISTE| sort | uniq > $OUTPUT
Verify X509 Certificate
Es ist nicht ausreichend nur den Private Key zu überprüfen!
OpenSSL bietet auch eine einfache Möglichkeit einen CSR zu prüfen:
openssl req -in example.csr -verify verify OK
Beim Public Key wird es komplizierter. Einzig eine Prüfung mit der Signatur der übergeordneten CA hilft. Hier eine erste Version eines Prüfscriptes.
#!/bin/bash if [[ $# -ne 1 ]]; then echo "Wrong number of arguments." exit 1 fi FILE=$1 # Allows to configure different openssl version OPENSSL=$(which openssl) TEMPDIR="/tmp USERAGENT="CustomUserAgent" # A proxy server would also get configured here WGETOPTS="--user-agent=${USERAGENT} --timeout=5 --tries=1 -e" SIGNER=$($OPENSSL x509 -in ${FILE} -text -noout | grep "CA Issuers - URI:http" | cut -d":" -f2- | tr -d '\r') if [[ -z $SIGNER ]]; then echo "No issuer certificate found for download." exit 1 fi SIGNERFILE=$(awk -F'/' '{print $NF}' <<<$SIGNER) /usr/bin/wget $WGETOPTS $SIGNER -O $TEMPDIR/$SIGNERFILE >/dev/null 2>&1 # Try to convert to PEM $OPENSSL x509 -inform der -in $TEMPDIR/$SIGNERFILE -out $TEMPDIR/$SIGNERFILE.cer 2>/dev/null if [[ -s $TEMPDIR/$SIGNERFILE.cer ]]; then # use converted file, if conversation was successfull SIGNERFILE="$SIGNERFILE.cer" fi echo -n "Certificate verification: " $OPENSSL verify -CAfile $TEMPDIR/$SIGNERFILE -partial_chain $FILE 2>&1 | grep -e "certificate signature failure" -e "OK" | cut -d":" -f2 # Cleanup if [[ ! -z $SIGNERFILE ]]; then /bin/rm $TEMPDIR/$SIGNERFILE* fi
ROT13 bash
Also auf die Idee bin ich noch nicht gekommen, einen ROT13 einfach mit ‚tr‘ zu erzeugen:
echo "Hallo Welt" | tr [a-zA-Z] [n-za-mN-ZA-M] Unyyb Jryg echo "Unyyb Jryg" | tr [a-zA-Z] [n-za-mN-ZA-M] Hallo Welt