|
|
(4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| [[Category:Programmierung]] | | [[Category:Programmierung]] |
| | | |
| + | Zum Thema '''BASH''' finden sich folgende Artikel: |
| * [[(Viele) Zeilen modifizieren, in denen ein Suchmuster (regex) vorhanden ist.]] | | * [[(Viele) Zeilen modifizieren, in denen ein Suchmuster (regex) vorhanden ist.]] |
| * [[Bash Bashing]] | | * [[Bash Bashing]] |
− | | + | * [[dump-Backupskript]] |
− | ==dump-Backupskript==
| + | * [[Datei einer bestimmten Größe mit zufälligem Inhalt erstellen]] |
− | | + | * [[Zufälligen String mit einer definierten Länge erzeugen]] |
− | Enthält ein paar interessante Hacks.
| + | |
− | <source lang="bash">
| + | |
− | #!/bin/bash
| + | |
− | # Funktionen
| + | |
− | function backup_age() {
| + | |
− | LEVEL=$1
| + | |
− | if ! test -f /tmp/backups/home/$LEVEL; then
| + | |
− | return 1
| + | |
− | fi
| + | |
− | LAST_DUMP=$(file /tmp/backups/home/$LEVEL \
| + | |
− | | grep -o "... ... .. ..:..:.. ...." | head -1)
| + | |
− | LAST_DUMP_EPOCH=$(date +%s -d "$LAST_DUMP")
| + | |
− | NOW_EPOCH=$(date +%s)
| + | |
− | echo $((NOW_EPOCH - LAST_DUMP_EPOCH))
| + | |
− | }
| + | |
− | function cleanup() {
| + | |
− | LEVEL=$1
| + | |
− | rm -f /tmp/backups/home/*.tmp
| + | |
− | for file in /tmp/backups/home/*
| + | |
− | do
| + | |
− | base=$(basename $file)
| + | |
− | test "$base" = "*" && break
| + | |
− | test "$base" -le $LEVEL && continue
| + | |
− | rm $file
| + | |
− | done
| + | |
− | }
| + | |
− |
| + | |
− | # Programm
| + | |
− | if ! test $(id -u) = 0; then
| + | |
− | echo "$0: Keine Root-Rechte!" >&2
| + | |
− | exit 1
| + | |
− | fi
| + | |
− | if ! backup_age 0 \
| + | |
− | || test $(backup_age 0) -gt 604800; then
| + | |
− | dump -u -0 -f /tmp/backups/home/0.tmp /home \
| + | |
− | && mv /tmp/backups/home/0{.tmp,}
| + | |
− | cleanup 0
| + | |
− | elif ! backup_age 1 \
| + | |
− | || test $(backup_age 1) -gt 86400; then
| + | |
− | dump -u -1 -f /tmp/backups/home/1.tmp /home \
| + | |
− | && mv /tmp/backups/home/1{.tmp,}
| + | |
− | cleanup 1
| + | |
− | else
| + | |
− | dump -u -2 -f /tmp/backups/home/2.tmp /home \
| + | |
− | && mv /tmp/backups/home/2{.tmp,}
| + | |
− | cleanup 2
| + | |
− | fi
| + | |
− | </source>
| + | |
− | | + | |
− | == Datei einer bestimmten Größe mit zufälligem Inhalt erstellen==
| + | |
− | Brauchbar z.B. für Bandbreitentests.
| + | |
− | <source lang="bash">
| + | |
− | dd if=/dev/urandom bs=1M count=4096 of=4gb_testdatei
| + | |
− | </source>
| + | |
− | In diesem Beispiel wird eine 4GB große Datei erstellt.
| + | |
− | | + | |
− | == Zufälligen String mit einer definierten Länge erzeugen ==
| + | |
− | * Kann z.B. zum erzeugen eines neuen Passwortes genutzt werden.
| + | |
− | * Das Bsp.-script prüft:
| + | |
− | ** ob ein Parameter für die Länge des zu erzeugenden Strings übergeben wird,
| + | |
− | ** ob dieser ein Integer ist
| + | |
− | ** und dieser kleiner als 1000000 ist (dient gegen Rechnerstress).
| + | |
− | * Die Standardlänge des Strings ist hier 10 Zeichen.
| + | |
− | <source lang="bash">
| + | |
− | #!/bin/bash
| + | |
− |
| + | |
− | #
| + | |
− | # function for random string
| + | |
− | #
| + | |
− | function randstrg () {
| + | |
− | local strgLength
| + | |
− | local strg
| + | |
− | if [ $1 ]; then
| + | |
− | strgLength=$1
| + | |
− | else
| + | |
− | strgLength=10
| + | |
− | fi
| + | |
− |
| + | |
− | strg=</dev/urandom tr -dc A-Za-z0-9 | head -c $strgLength
| + | |
− | return $strg
| + | |
− | }
| + | |
− |
| + | |
− | #
| + | |
− | # ERROR-handling if parameter 1 set, not to big and not a integer
| + | |
− | #
| + | |
− | if [ ${1} ]; then
| + | |
− | if [ ! $(echo "${1}" | grep -E "^[0-9]+$") ] || [ "${1}" -gt 1000000 ]; then
| + | |
− | echo 'wrong 1. parameter ( Must be an INTEGER <= 1000000! )'
| + | |
− | echo 'usage:'
| + | |
− | echo "${0} [ INTEGER ]"
| + | |
− | exit
| + | |
− | fi
| + | |
− | fi
| + | |
− |
| + | |
− | #
| + | |
− | # GO
| + | |
− | #
| + | |
− | strg= randstrg ${1}
| + | |
− | echo $strg
| + | |
− | </source>
| + | |