Die Shell bietet diverse Möglichkeiten die Länge eines Strings zu ermitteln.

Die schnellste und kompatibelste Methode die Länge einer Zeichenkette auf die schnelle im Terminal zu ermitteln ist meiner Meinung nach diese hier:

echo -n "String Länge in Terminal / Konsole" | wc -c

Auf neueren Systemen lässt sich im Terminal die String Länge auch mit einem Kommando ausgeben:

expr length "String Länge in Terminal / Konsole"

Während in einem Shell Script die länge am schönsten so ermittelt wird:

#! /bin/sh
str="string länge in script"
echo ${#str}
Keine Kommentare »
 

ldd gibt dynamisch gelinkte Abhängigkeiten („dependency“) von ausführbaren Binaries in der Shell aus. Dieser Ausschnitt zeigt welche Bibliotheken catman benötigt um zu funktionieren.

~ ldd /usr/bin/catman
	linux-vdso.so.1 =>  (0x00007fffea5e1000)
	libmandb-2.6.7.1.so => /usr/lib/man-db/libmandb-2.6.7.1.so (0x00007faf0b18a000)
	libman-2.6.7.1.so => /usr/lib/man-db/libman-2.6.7.1.so (0x00007faf0af6a000)
	libgdbm.so.3 => /usr/lib/x86_64-linux-gnu/libgdbm.so.3 (0x00007faf0ad3b000)
	libpipeline.so.1 => /usr/lib/x86_64-linux-gnu/libpipeline.so.1 (0x00007faf0ab2e000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007faf0a769000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007faf0a54f000)
	/lib64/ld-linux-x86-64.so.2 (0x00007faf0b59c000)

Wenn ein Programm keine dynamisch gelinkten Bibliotheken / Abhängigkeiten hat gibt es auch keine Ausgabe.

Keine Kommentare »
 

Hin und wieder kommt es vor das veränderte, erstellte Dateien oder Dateien die vor kurzem verwendet wurden ermittelt werden müssen. Mit find ist das ganz gut möglich.

Veränderte Dateien in den letzten 24 Stunden:

find /path -mtime -1 -ls

Erstellte Dateien in den letzten 24 Stunden:

find /path -ctime -1 -ls

Verwendete Dateien in den letzten 24 Stunden:

find /path -atime -1 -ls

Unter anderem können folgende Parameter für die Zeitangabe übergeben werden:

  • -mtime wenn die Datei verändert wurde in Tagen
  • -mmin wenn die Datei verändert wurde in Minuten
  • -ctime wenn die Datei erstellt wurde in Tagen
  • -cmin wenn die Datei erstellt wurde in Minuten
  • -atime wenn die Datei verwendet wurde in Tagen
  • -amin wenn die Datei verwendet wurde in Minuten

Zu beachten ist der erste Buchstabe. a steht für verwendet. c für erstellt und m für modifiziert. Die Zahl die dem Parameter übergeben wird ist immer 1:1 mit der Zeitangabe verbunden. D.h.:

  • -mmin -1 verändert vor einer Minute
  • -mtime -1 verändert vor einem Tag
  • -mtime -0.25 verändert vor 0,25 Tagen bzw. 6 Stunden.
Keine Kommentare »
 

Vergessen das man beim Ausführen eines Befehls root sein musste? Super schnell lässt sich der zuletzt verwendete Befehl erneut ausführen mit:

~# sudo !!

Wenn sudo nicht verfügbar ist geht das Wiederholen des Kommandos auch mit su:

su -c "!!"
Keine Kommentare »
 

Ein kurzes Script um Benutzer aus einer Leerzeichen separierten Liste (siehe im Script CREATEUSER: user1 user2 userx) in MySQL zu importieren. Das Script speichert dabei Benutzer und das zufällig generierte Passwort 16 stellige Passwort in einer Log Datei (siehe im Script LOGFILE). Zusätzlich erstellt das Script eine Datenbank betitelt mit dem Benutzername. Für die erstellte Datenbank werden dem erstellten Benutzer außerdem alle Rechte garantiert.

Verwendung:

  • MySQL Login Daten eintragen
  • Benutzerliste
  • Logdatei eintragen (optional)
  • ausführen
#!/bin/sh
 
##
## <Configuration>
##
 
## MySQL login data
MYSQLUSER="root"
MYSQLPASS="MYSQLrootPassword"
MYSQLHOST="localhost"
 
## logfile
LOGFILE="/var/log/createmysqluser.log"
 
## mysql user to create
CREATEUSER="User1 User2"
 
##
## </Configuration>
##
 
for USER in ${CREATEUSER}; do
        PASSWORD=$(cat /dev/urandom | strings | grep -m 1 -oEi '[a-zA-Z0-9]{16}')
        echo "${USER} ${PASSWORD}" >> ${LOGFILE} 
        mysql -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS -e "CREATE USER ${USER}@'localhost' IDENTIFIED BY '${PASSWORD}';"
        mysql -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS -e "CREATE DATABASE ${USER};"
        mysql -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS -e "GRANT ALL PRIVILEGES ON ${USER}.* TO ${USER}@'localhost' WITH GRANT OPTION;"
done

Super praktisch wäre das Script, wenn es die MySQL Benutzer Liste über eine Datei einlesen würde. Macht es aber nicht. 🙂

Keine Kommentare »
 

Den SSH Port unter Linux zu ändern bringt zusätzliche Sicherheit, neben Überwachung der Login Voränge mit fail2ban. Sobald der standard SSH Port geändert ist werden die fehlgeschlagenen Login-Versuche, die inzwischen beinnahe jeder Server in den Log Dateien (siehe /var/log/auth.log) hat, abnehmen.

  • Der Port des SSH Servers wird in der Datei /etc/ssh/sshd_config hinterlegt. Das Kommando zum öffnen:

    nano /etc/ssh/sshd_config
  • Im oberen Bereich der Datei findet sich direkt der Port. Dieser kann beliebig ersetzt werden.

    # What ports, IPs and protocols we listen for
    Port 22

Bevor die Änderungen übernommen werden sollte geprüft werden ob der Port eventuell blockiert oder durch eine Firewall gesperrt ist und entsprechende Anpassungen an weiteren Diensten vorgenommen werden müssen. Bei einer minimalen Debian Installation wird es beispielsweise keine Konflikte geben.

  • Um die Einstellungen zu übernehmen muss der SSH Server neu gestartet werden.

    service sshd restart

    Das Kommando zum Service Neustart ist distributionsabhängig. Es könnte bei dir also auch ein anderes sein.

Keine Kommentare »