Dies ist eine alte Version des Dokuments!
for RECHNER in 22 04 05 do ssh nutzer$RECHNER@notebook$RECHNER play /usr/share/sounds/phone.wav done
Alle Rechner von 201 bis 230 anpingen:
for IP in {201..230} do ping -c 1 192.168.1.$IP done
Umbenennen von allen Dateien, die auf .txt enden nach .bak:
shopt -s nullglob for DATEI in *.txt do mv $DATEI ${DATEI%.txt}.bak done
Netzwerk EKG
ping 192.168.1.7 | while read; do play /usr/share/sounds/info.wav; done
warten bis Tunnel aufgebaut ist
ssh -i /root/.ssh/backup-id_dsa backup@server -n -N -L 873:localhost:873 & SSHPID=$! echo wait for connection to localhost:873 until lsof -i4TCP:873; do echo -n .; sleep 1; done echo echo got connection
tunnel nutzen … und dann wieder schließen
kill $SSHPID
Vereinfachtes Beispiel für ein init-Skript:
#!/bin/bash case "$1" in start) date ;; stop) date ;; restart) $0 stop $0 start ;; *) echo usage $0 [start] [stop] [restart] ;; esac
Here Dokumente als Templates 1):
VARIABLE=test cat <<-HTML; <html> <head> <title>Variable ist $VARIABLE</title> </head> <body> bla </body> </html> HTML
Hier das selbe ohne Variablenersetzung/Kommandosubstitution:
VARIABLE=test cat <<-'HTML'; <html> <head> <title>Variable ist $VARIABLE</title> </head> <body> bla </body> </html> HTML
#!/bin/bash SUCHWORT="$1" ERSATZTEXT="$2" DATEI="$3" TMPFILE=$(mktemp) sed "s/$SUCHWORT/$ERSATZTEXT/g" "$DATEI" > "$TMPFILE" cat "$TMPFILE" > "$DATEI" rm "$TMPFILE"
oder einfacher
#!/bin/bash SUCHWORT="$1" ERSATZTEXT="$2" DATEI="$3" sed -i "s/$SUCHWORT/$ERSATZTEXT/g" "$DATEI"
#!/bin/bash SUCHWORT="$1" ERSATZTEXT="$2" DATEI="$3" TMPFILE=$(mktemp) ( while read line do line="${line//$SUCHWORT/$ERSATZTEXT}" done ) < "$DATEI" > "$TMPFILE" cat "$TMPFILE" > "$DATEI" rm "$TMPFILE"
#!/bin/bash SUCHWORT="$1" ERSATZTEXT="$2" DATEI="$3" perl -pi -e "s/$SUCHWORT/$ERSATZTEXT/g" "$DATEI"
#!/bin/bash SUCHWORT="$1" ERSATZTEXT="$2" DATEI="$3" TMPFILE=`mktemp` while read line do line=${line//${SUCHWORT}/${ERSATZTEXT}} echo "${LINE}" > $TMPFILE done < ${DATEI} mv $TMPFILE ${DATEI}
sed -n 's/nutzer\([0-9]\+\)/\1nutzer/pg' /etc/passwd sed -n 's/^\([^:]\+:[^:]*:\)\([[:digit:]]\{4\}\):/\11\2:/p' /etc/passwd # \1 \2 (uidNumber) sed -nr 's/^([^:]+:[^:]*:)([[:digit:]]{4}):/\11\2:/p' /etc/passwd
perl -p -e ' s/ ( nutzer(\d+) ): # Benutzername \1, nutzer-nummer \2 ( [^:]* ): # Passwort \3 \d+: # UidNumber /\1:\3:5\2:/x # Ersatztext ' /etc/passwd
#!/bin/bash function usage() { echo $0 suchwort ersatztext datei exit 1 } test $# -eq 3 || usage
set -x
einschalten: Jede Zeile wird ausgegeben, bevor sie ausgeführt wird.
set -e
einschalten: Programm bricht beim ersten Fehler ab
Fehlermeldungen für mehrere Befehle umleiten:
exec 4>&2 exec 2>/dev/null
.. Befehle ..
exec 2>&4 exec 4>&-
Fehlermeldungen wiederherstellen und Kanal 4 schließen