Kategori bash

tail -F color

Mittwoch, Februar 1st, 2012

Heute musste ich den ganzen Tag ein Logfile überwachen. Damit das nicht zu anstrengend wird und man Fehler nicht übersieht, habe ich das Logfile einfach eingefärbt.

tail -F file.log | awk '
/FATAL/ {print "\033[31m" $0 "\033[39m"}
/WARN/ {print "\033[33m" $0 "\033[39m"}
/INFO/ {print "\033[32m" $0 "\033[39m"}
'

Leerzeichen im Pfad

Mittwoch, Juli 20th, 2011

Wenn man Dateien mit Leerzeichen in eine Variabel einlesen möchte braucht man ls -b und read -r

ls -b > .tmp
while read -r datei; do
        echo $datei
done < .tmp

rionice

Mittwoch, Juni 15th, 2011

Um rekursiv ionice zu vererben haben wir mal eben ein rionice geschrieben.

#!/bin/bash
 
ionice -c 3 -p $(pstree -p $1 | tr "(" "\n" | cut -d ")" -f 1 | egrep "^[0-9]+\$")
 
exit 0

Um es aufzurufen muss man die PID des Mutterprozesses rionice übergeben. Dies macht man am besten mit ps -xf. Dann übergibt man rionice 1234.

upstart und die fehlende bash tab completion

Montag, Mai 16th, 2011

Was mich an meisten an upsatart, abgesehen davon das es schlecht zu Debuggen ist, gestört hat ist die fehlende bash tab completion.

Auf launchpad.net habe ich aber den passenden Burgreport gefunden und den dazugehörigen Patch, den man folgendermaßen verwenden kann:

sudo wget -O /etc/bash_completion.d/upstart https://launchpadlibrarian.net/40624366/upstart

(weiterlesen …)

imagemagick resizen script

Montag, April 11th, 2011

Da ich mit meiner neuen Kamera derzeit viele Fotos mit 18 Mega Pixeln mache, brauchte ich ein Batch Script das viele Bilder gleichzeitig resizen kann. So bin ich auf das Parkte imagemagick gestoßen.

Mein Script erstellt nun einen Ordner namens Web und erstellt in diesem verkleinerte Bilder mit maximal 800px Länge oder Breite.

#!/bin/bash
mkdir web
 
ls -1 *.JPG *.jpg | while read file;
do {
        echo $file
        convert $file -resize '800x800>' web/$file
}
done
 
exit 0
 

Mehr Infos: wiki.ubuntuusers.de

Langeweile vor der Shell

Samstag, April 2nd, 2011

Hier mal was gegen die Langeweile vor der Shell:
while true; do pwgen -ys $COLUMNS $(($RANDOM % 4 + 1)); sleep 0.2;done

älter als löschen

Sonntag, Januar 23rd, 2011

Da ich auch hier nach jedes mal wieder suche hier für alle:
Diese Zeile löscht alle Dateien die Älter als 3 Tage sind.
find '/home/user/' -type f -mtime +3 -exec rm {} \;

cron und $var

Freitag, November 26th, 2010

Damit man die bash Umgebungsvariablen wie z.b.:

0 0 * * * /sbin/shutdown -r +$(($RANDOM \% 60))

in crontab nutzen kann, kann man nicht einfach bach "befelh" davor schreiben. Man muss erst die dash konfigurieren:

sudo dpkg-reconfigure dash

Quelle: Shiva6

Passwort setzen

Mittwoch, Oktober 6th, 2010

Hier habe ich ein Ausschnitt eins Skripts zum setzen eines User Passwortes. Zuerst erzeuge ich ein zufälliges 12 stelliges Passwort mit dem Programm pwgen dann verwende ich mit Hilfe von bash befehlen das Programm passwd um das Passwort zu setzen.

 
#!/bin/bash
PW=$(pwgen -1 12)
passwd user <<EOF
$PW
$PW
EOF
 

rumount

Dienstag, September 7th, 2010

Da es ja ein mount -r gibt habe ich mir mal ein rumount geschrieben.

./rumount pfad

 
#!/bin/bash
cat /proc/mounts | grep $1 | cut -d " " -f2 | tac | xargs -n1 umount
exit 0

mklvm.sh

Samstag, April 3rd, 2010

Zur Doku poste ich mal mein mklvm.sh Skript. Mit dem man Automacht neue LVs erstellen, formatieren und mounten kann.

Abzulegen ist das Skript in: /usr/local/sbin/mklvm.sh

#!/bin/bash
NAME=$1
VOLUMEN=$2
 
lvcreate -n $NAME -L $VOLUMEN vg # vg durch den Volumen Groupe Namen ersetzen!!!
mkfs -t ext3 /dev/$NAME
mkdir /mnt/$NAME
mount /dev/$NAME /mnt/$NAME
echo "/dev/$NAME           /mnt/$NAME         ext3    relatime,errors=remount-ro 0    0" >> /etc/fstab
mount -a
 
exit 0

Dann kann man mit folgenden Befehl LVs anlegen:
mklvm.sh neue_lv_name 25G

sudo tee time.now

Donnerstag, März 26th, 2009

Da man mit sudo gut auf die Nasse fallen kann wie man im folgenden Beispiel sieht...
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

... gibt tee dabei Abhilfe
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

tee liest dabei von "Standard input" und schreib es nach "Standard output" oder in diesem Fall in eine Datei.