Tipps für Anfänger und Fortgeschrittene
RSS icon Home icon
  • Bash-Shell – Scripte

    Um komplizierte Befehle einfach auszuführen oder Bedingungen innerhalb einer Abfrage zu definieren, ist es besser sie in Scripte zu packen.
    Diese sind nichts weiter als Dateien, in denen Zeile für Zeile die Anweisungen abgearbeitet werden.

    Die Besonderheit ist, dass die Script Datei, mit der Definition des Interpreter beginnen muss. In unserem Fall wird die Bash-Shell aufgerufen, mit der Angabe:
    #!/bin/bash

    Nach dem schreiben der Scriptes, muss es noch ausführbar gemacht werden:
    chmod +x scriptname

    Jetzt kann mit ./scriptname, das Script ausgeführt werden.
    Um dies Systemweit, unter dem angemeldeten User zu tun, ist es wichtig ein Verzeichnis unter dem eigenem Home Verzeichnis anzulegen:
    cd $HOME
    mkdir scripte
    chmod 744 scripte

    Danach muss noch der Pfad zu /scripte, in die PATH Variable mit aufgenommen werden:
    nano ~/.bashrc

    und unter PATH=/……:/home/USERNAME/scripte mit anzuhängen.

    Jetzt kann ohne Angabe des Pfades oder der ./ausführbar Angabe, das Script wie ein normaler Befehl aufgerufen werden.


    aktuelles Verzeichnis nach angegebener Datei durchsuchen und zählen

    Aufruf: zaehlen_v php

    Code:

    #!/bin/bash
    # Zaehlt Dateien eines Types im aktuellen Verzeichnis
    # Eingabe mit „zaehlen_v dateityp“ Beispiel: zaehlen_v php
    # gefunden by http://blog.falco2.de

    infotext1=“im aktuellen Verzeichnis“
    verzeichnis=“`pwd`“
    infotext2=“sind“
    dateityp=“`ls -l *.$1 | wc -l`x $1″
    infotext3=“Dateien vorhanden“
    echo -e $infotext1 „\033[49;1;34m$verzeichnis““\033[0m $infotext2“ „\033[49;1;31m$dateityp““\033[0m $infotext3“
    exit 0

    Funktion:
    Das aktuelle Verzeichnis wird mit ls -l und dem vorgegebenen Suchwort eingelesen und per wc -l zeilenweise gezählt. Die grafische Ausgabe erfolgt über echo -e und Farbanweisungen. Es ist darauf zu achten, daß \033[0m mit einzubinden, damit die nachfolgende Ausgabe wieder original ausgegeben wird.

    Download des Scripts - zaehlen_v (2795 Downloads )
    aktuelles Verzeichnis & alle Unterverzeichnisse nach angegebener Datei durchsuchen und zählen

    Aufruf: zaehlen_u php

    Code:

    #!/bin/bash
    # Zaehlt Dateien eines Types im Verzeichnis & alle Unterverzeichnisse
    # Eingabe mit „zaehlen_u dateityp“ Beispiel: zaehlen_u php
    # gefunden by http://blog.falco2.de

    infotext1=“im aktuellen & allen Unterverzeichnisen sind“
    dateityp=“`find -type f -iname „*.$1″ | wc -l`x $1“
    infotext2=“Dateien vorhanden“
    echo -e $infotext1 „\033[49;1;31m$dateityp““\033[0m $infotext2“
    exit 0

    Funktion:
    Das aktuelle Verzeichnis und alle Unterverzeichnisse werden mit find -iname (egal ob GROß- oder kleinschreibung) und dem vorgegebenen Suchwort eingelesen und per wc -l zeilenweise gezählt. Die grafische Ausgabe erfolgt über echo -e und Farbanweisungen. Es ist darauf zu achten, daß \033[0m mit einzubinden, damit die nachfolgende Ausgabe wieder original ausgegeben wird.

    Download des Scripts - zaehlen_u (2817 Downloads )
    vorgegebene Anzahl von Ordner mit vorgegebenen Ordnernamen erstellen

    Aufruf: mkdir_e 20 falco2

    Code:

    #!/bin/bash
    # Ordner erzeugen mit Angabe des Ordnernamens
    # Eingabe erfolgt mit „mkdir_e Anzahl Ordnername“
    # es entstehen entsprechend der Anzahl, die Ordner
    # gefunden by http://blog.falco2.de

    i=1
    while [ $i -le $1 ]
    do
    mkdir $2$i
    let i=$i+1
    done
    exit 0

    Funktion:
    Mit $1 wird die Anzahl und mit $2 wird der Ordnername an die Funktion im Script übergeben. Dann wird mit mkdir und mit den 2 Parametern ($1&$2), das Verzeichnis erstellt und dann wird immer 1 dazu gezählt.

    Download des Scripts - mkdir_e (2787 Downloads )
    vorgegebene Anzahl von Dateien mit vorgegebenem Dateinamen erstellen

    Aufruf: dateien_e 30 Inhalt

    Code:

    #!/bin/bash
    # Dateien erzeugen mit Angabe des Dateinamens
    # Eingabe erfolgt mit „dateien_e Anzahl Dateiname“
    # es entstehen entsprechend der Anzahl leere Dateien
    # gefunden by http://blog.falco2.de

    i=1
    while [ $i -le $1 ]
    do
    touch $2$i
    let i=$i+1
    done
    exit 0

    Funktion:
    Mit $1 wird die Anzahl und mit $2 wird der Dateiname an die Funktion im Script übergeben. Dann wird mit touch und mit den 2 Parametern ($1&$2), die Datei erstellt und dann wird immer 1 dazu gezählt.

    Download des Scripts - dateien_e (2716 Downloads )
    installations Befehl abkürzen

    Aufruf: instal nmap

    Code:

    #!/bin/bash
    # installieren von Programmen
    # (Abkürzen des apt-get install Komandos)
    # Eingabe erfolgt mit „instal Programm Name“
    # gefunden by http://blog.falco2.de

    sudo apt-get install $1

    Funktion:
    Mit $1 wird der Programm Name ausgelesen, der hinter dem sudo apt-get install Befehl angegeben wird.

    Download des Scripts - instal (2772 Downloads )
    externe IP auslesen

    Aufruf: wieistmeineip

    Code:

    #!/bin/bash
    # externe IP auslesen
    # Eingabe erfolgt mit „wieistmeineip“
    # gefunden by http://blog.falco2.de

    wget http://www.myipaddress.com/ -q -O – | grep -Eo –color ‚\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>‘

    Funktion:
    Mit wget http://www.myipaddress.com/ wird die externe IP auf der Webseite abgefragt und per grep in Einzelteile „zerlegt“ und angezeigt.

    Download des Scripts - wieistmeineip (2423 Downloads )
    PDF Dateien aus manpages (Handbuch) erstellen

    Aufruf: sh man_pdf.sh befehl

    Code:

    #!/bin/bash
    # PDF aus manpages (Handbuch) erstellen
    # Eingabe erfolgt mit „sh man_pdf.sh befehl“
    # gefunden by http://blog.falco2.de

    ## Benötigt wird Manpages in Deutsch

    ## Debian/Ubuntu
    # sudo apt-get install manpages-de

    ## Fedora
    # sudo apt-get install man-pages-de

    ## das Programm ps2pdf installieren mit
    # sudo apt-get install ghostscript

    man -t $1 >$1.ps && ps2pdf $1.ps && rm $1.ps && see $1.pdf

    Funktion:
    mit der Angabe von man_pdf ls wird der Aufruf von man -t ls gestartet.
    ls wird an $1 übergeben und an jeder Stelle in der Datei statt $1 verwendet.
    1. ls.ps erstellen mit man -t ls
    2. PDF erstellen aus ls.ps mit ps2pdf ls.ps
    3. nicht benötigte ls.ps löschen mit rm ls.ps
    4. PDF Datei anschauen mit see ls.pdf

    Download des Scripts - manpages zu PDF (3683 Downloads )
    Prozent Anzeige beim Datei kopieren

    Aufruf: sh cp_pv.sh Name_Original Name_Kopie

    Code:

    #!/bin/bash
    # Kopiert 1 Datei von A nach B mit Fortschrittanzeige
    # Eingabe erfolgt mit “sh cp_pv.sh Name_Original Name_Kopie”
    # gefunden by http://blog.falco2.de

    # sudo apt-get install pv

    pv -perbt $1 > $2
    exit 0

    Funktion:
    mit der Angabe von cp_pv Name_Original > Name_Kopie wird
    der Aufruf von pv -perbt Name_Original > Name_Kopie gestartet.
    Name_Original wird an $1 übergeben und in der Datei statt $1 verwendet.
    Name_Kopie wird an $2 übergeben und in der Datei statt $2 verwendet.
    pv wirkt mit seinen Schaltern
    -p = zeigt den Fortschrittsbalken an
    -e = zeigt die vermutliche Gesamtgröße der Datei an
    -r = zeigt die aktuelle Datenübertragungsrate an
    -b = zeigt die Menge der Daten an, so weit schon übertragen
    -t = zeigt an wie lange der Vorgang schon läuft

    Download des Scripts - Kopieren mit Anzeige (3789 Downloads )

    LibreOffice Tabellen- und Dokumentenschutz aufheben

    Aufruf: sh schutz_aufheben.sh Info_geschuetzt.ods

    Code:

    #!/bin/bash
    # Hebt den Tabellen- und Dokumentenschutz einer Calc.ods Datei auf
    # Eingabe mit „sh schutz_aufheben.sh Dokumenten_Name”
    # Beispiel: sh schutz_aufheben.sh Info_geschuetzt.ods
    # gefunden by http://blog.falco2.de

    unzip $1 content.xml >/dev/null 2>&1 && find content.xml -type f -exec sed -i ’s/table:protected=“true“/table:protected=“false“/g‘ {} \; && find content.xml -type f -exec sed -i ’s/table:structure-protected=“true“/table:structure-protected=“false“/g‘ {} \; && zip -v $1 content.xml >/dev/null 2>&1 && rm content.xml
    echo „Der Schutz von $1 wurde aufgehoben“
    exit 0

    Funktion:
    1. mit der Angabe von unzip $1 content.xml wird die content.xml aus dem Office Dokument entpackt.
    2. der Aufruf von >/dev/null 2>&1 schickt alle Meldungen ins nichts. (Ausgabe werden unterdrückt)
    3. der find Befehl sucht nach table:protected=“true“ und table:structure-protected=“true“ in der content.xml und ersetzt „true“ durch „false“ mit find content.xml -type f -exec sed -i ’s/table:protected=“true“/table:protected=“false“/g‘ {} \; && find content.xml -type f -exec sed -i ’s/table:structure-protected=“true“/table:structure-protected=“false“/g‘ {} \;
    3. mit der Angabe zip -v $1 content.xml wird die geänderte content.xml wieder in das LibreOffice Dokument zurück geschrieben.
    4. mit dem Befehl rm content.xml wird die nun überflüssige content.xml gelöscht.
    5. echo „Der Schutz von $1 wurde aufgehoben“ gibt die Info aus das hart gearbeitet wurde 🙂
    6. mit exit 0 wird das Script sauber verlassen

    Download des Scripts - schutz_aufheben (1525 Downloads )