Bash-Scripte

Dieses Thema im Forum "Linux & BSD" wurde erstellt von Kolazomai, 9. Oktober 2006 .

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 9. Oktober 2006
    Zuletzt von einem Moderator bearbeitet: 13. April 2017
    Hallo zusammen!

    auf Idee und Wunsch von nicht nur L!Ld4rk halte ich es fuer eine gute Idee, einen Thread mit kleinen nuetzlichen Bash-Scripts zu eroeffnen.

    Sicher kennt jeder von euch Bash, Shell, Zsh, ... all diese Interpreter koennen genutzt werden, um Scripte auszufuehren, die die taegliche arbeit und/oder die staendig selben Routinen zu erleichtern. So kann man per Script z.B. User hinzufuegen, Festplatten mounten oder eine CD brennen ohne sich viele Befehle merken zu muessen.

    Dieser Thread soll ein Ort fuer Scripte sein, die man mit einem solchen Interpreter ausfuehren kann. Es soll Fortgeschrittenen vielleicht den Weg zum Programmieren oeffnen, und vor allem anfaengern den Einstieg in die Welt der Unix-Systeme erleichtern.

    So, jetzt aber zu dem, was euch interessieren wird.

    Wie soll so ein Post, in dem ich mein Script veroeffentlichen will, aussehen ?

    Er soll wie folgt aussehen:
    Code:
    [b]Name des Scripts:[/b]
    [b]author:[/b]
    [b]Beschreibung:[/b]
    [b]Benutzung:[/b]
    [b]Code:[/b]
    [code]#!/bin/interpreter
    
    # Hier euer Code
    # Beachte, dass die erste Zeile '#!/bin/interpreter' sein muss
    [/code]

    -

    Beispiel:

    Name des Scripts: Name
    author: Max Mustermann
    Beschreibung: Ein Testscript
    Benutzung: ./Name test lala
    Code::
    Code:
    #!/bin/bash
    
    echo -e "Hello World\n"
    ---

    Wie fuehre ich so ein Script aus ?

    1. Ihr oeffnet mit einem Texteditor euerer Wahl eine leere Textdatei
    2. Ihr kopiert den Inhalt der Code-Tags in die Datei
    3. Ihr speichert die Datei ab
    4. Ihr fuehrt das Folgende aus, um die Datei ausfuehrbar zu machen:
    Code:
    chmod +x euer_script.sh
    Das x steht fuer 'execute' oder 'executable'.
    5. Ihr startet nun das Script. Beachtet hierbei 'Benutzung'.
    Code:
    ./euer_script.sh
    ---

    Sollte ein Script mal nicht so funktionieren, wie es in der Beschreibung steht, sendet bitte eine PN ( Private Nachricht ) an den Scriptautor und schreibt es NICHT hier hinein!

    Viel Spass beim Coden,

    Mfg,

    Kolazomai
     

  2. Anzeige
    Dealz: stark reduzierte Angebote finden.
  3. #2 9. Oktober 2006
    AW: Bash-Scripte

    Name: Mountscript
    Beschreibung: Es erleichter das Mounten von Medien
    Author: L!Ld4rk
    Benutzung: script per ./mount.sh starten danach Anweisungen befolgen
    Code:
    Code:
    #!/bin/bash
    echo -n "Please enter the Dev to mount. After that tape your root password"
    read WAYNE
    echo -n "Enter your device to mount: "
    read PLATTE
    su -c "mkdir /media/$PLATTE"
    su -c "mount /dev/$PLATTE /media/$PLATTE"
    echo "Thanks for using this script. Written by L!Ld4rk."
    !Download!





    Name: Brennscript
    Beschreibung: Ein Script was das Brennen mit dem Terminal erleichter (cdrecord wird gebraucht)
    Author: L!Ld4rk
    Benutzung: script per ./brennen.sh starten danach Anweisungen befolgen
    Code:
    Code:
    #!/bin/bash
    
    echo -n "Welcome to the cdburn Script. Please enter to continue!"
     read WAYNE
    echo -n "You need the tool "cdrecord" to use this script! If you dont have it search it by google.com!"
     read WAYNE
    echo -n "Please enter the number of your cd recorder (sampel dev=0,1,0): "
     read DEV
    echo -n "Please enter the burnspeed: "
     read SPEED
    echo -n "Please enter the path to the image: "
     read IMAGE
    
    cdrecord -v -eject -cdrecord -v -eject -driveropts=burnfree -dao dev=$DEV speed=$SPEED $IMAGE
    
    echo -n "Thank you for using this script. Written by L!Ld4rk."
    
    !Download!





    Name: Brennscript ver.2 [Debianbasierende Distris]
    Beschreibung: Wie das normale nur es überprüft pb cdrecord installiert ist. ist es nicht der fall wird es nachträglich installiert
    Author: L!Ld4rk
    Benutzung: script per ./brennen2.sh starten danach Anweisungen befolgen
    Code:
    Code:
    #!/bin/bash
    
    #info
    echo -n "Welcome to the cdburn Script. Press enter to continue!"
     read WAYNE
    
    #check if cdrecord is install
    if which "cdrecord" >/dev/null; then
     echo "cdrecord found!"
    
     #configuration of cdrecord
     echo -n "Please enter the number of your cd recorder (sampel dev=0,1,0): "
     read DEV
     echo -n "Please enter the burnspeed: "
     read SPEED
     echo -n "Please enter the path to the image: "
     read IMAGE
    
     #burn
     cdrecord -v -eject -cdrecord -v -eject -driveropts=burnfree -dao dev=$DEV speed=$SPEED $IMAGE
    
     #exit
     echo -n "Thank you for using this script. Written by L!Ld4rk."
    
    
    
    
    else
     echo "cdrecord wasnt found. it will now install by apt"
     su -c "apt-get install cdrecord"
    
     #configuration of cdrecord
     echo -n "Please enter the number of your cd recorder (sampel dev=0,1,0): "
     read DEV
     echo -n "Please enter the burnspeed: "
     read SPEED
     echo -n "Please enter the path to the image: "
     read IMAGE
    
     #burn
     cdrecord -v -eject -cdrecord -v -eject -driveropts=burnfree -dao dev=$DEV speed=$SPEED $IMAGE
    
     #exit
     echo -n "Thank you for using this script. Written by L!Ld4rk."
    
    !Download!




    Name: RarEntpack-Script
    Beschreibung: Erleichter das Entpacken von *.rar Dateien!
    Author: L!Ld4rk
    Benutzung: script per ./unrar.sh starten danach Anweisungen befolgen
    Code:
    Code:
    #!/bin/bash
    
    echo -n "Welcome to the unrar script! Please press enter to continue!"
     read WAYNE
    echo -n "Please enter the path of your *.rar file: "
     read RAR
    echo -n "Please enter the path to extract the file: "
     read UNRAR
    unrar e $RAR $UNRAR
    echo "Thanks for using this script! Written by L!Ld4rk"
    
    !Download!
     
  4. #3 13. Oktober 2006
    AW: Bash-Scripte

    Name des Scripts: MKSplitRAR
    Author: Beginner(Ich)
    Beschreibung: Erstellt RAR-Split-Archive
    Benutzung: ./mksplitrar --help
    Hinweis: Man sollte im Verzeichniss der Dateien die man Packt sein, weil es sonst den ganzen Verzeichnissbaum zu den Dateien im Archiv abbildet, ich werd das mal beheben wenn ich zuviel Zeit hab
    Code::
    Code:
    #mksplitrar
    
    #!/bin/s
    set -- `getopt "echg:o:p:" "$@"` 
    output="x"
    grose="x"
    while :
    do
    case "$1" in
     
     -h) help=1;;
     -c) dc=1;;
     -e) ein=1;;
     -o) shift; output="$1" ;;
     -g) shift; grose="$1";;
     -p) shift; pw="$1";;
     --) break ;;
    esac
     shift
    done
    shift
    files=$*
    hilfe () {
    echo 
    echo "MkSplit ist ein Script zum erstellen gesplitteten Rar-Archiven."
    echo
    echo "Syntax:"
    echo
    echo "mksplitrar -o [Archiv.rar] -g [Größe der gesplitteten Dateien] Dateien"
    echo
    echo "Optionen:"
    echo
    echo "-h Help"
    echo 
    echo "-o Zieldatei z.B -o Test.rar "
    echo 
    echo "-g Größe der gesplitteten Dateien in Mb z.B. -g 15"
    echo 
    echo "-p Setzt ein Passwort z.B. -p geheim"
    echo 
    echo "-c Nur in verbindung von -p, verschlüsselt die Dateinamen."
    echo "Noch ein Beispiel:"
    echo 
    echo "mksplitrar -o test.rar -g 5 -p geheim -c bild1.jpg bild2.jpg "
    echo 
    echo "Erzeugt 5 Mb große Splitarchiven in denen bild1.jpg und bild2.jpg enthalten sind die Datein werden erst nach Eingabe des Passworts geheim sichtbar."
    echo
    }
    
    
    if [ "$help" = 1 ]
     then 
     hilfe
     exit 0
    fi
    
    if [ "$ein" = 1 ]
     then
     echo Bitte Zielarchiv eingeben:
     read output
     echo Bitte Splitarchivgröße in Mb angegen:
     read grose
     echo "Passwort setzen? ( j oder n )"
     read pw1
     if [ "$pw1" = "j" ]
     then echo Passwort eingeben
     read pw
     echo "Dateinamen verschlüsseln? ( j oder n )"
     read dc1 
     if [ "$dc1" = "j" ]
     then dc=1
     fi
     fi
    
    fi
    
    if [ "$output" = "x" ]
     then
     echo Kein Ausgabearchiv angegeben!
     hilfe
     exit 1
     elif [ "$*" = "0" ]
     then
     echo Keine Dateien zum packen angegeben
     hilfe
     exit 1
    fi
    echo ZielRar: $output 
    echo Zu packende Dateien: $files
    echo Größe pro .part-Datei: $grose MB
    if [ "$grose" = "0" ]
    then grose = 15
    fi
    
    #mio="1000000"
    size=$(expr "$grose" \* 1048576)
    echo $size
    if [ "$pw" != "" ]
     then
     if [ "$dc" = "1" ]
     then rar a -v"$size"b -m0 -hp$pw $output $files
     else rar a -v"$size"b -m0 -p$pw $output $files
     fi
     else rar a -v"$size"b -m0 $output $files
    fi
    
    #echo Created with mksplitrar >mksplitrar
    #rar c $output <mksplitrar
    #rm mksplitrar
    echo Alle Aufgaben beendet.
    echo Passwort: $pw
    exit 0
     
  5. #4 10. Dezember 2006
    AW: Bash-Scripte

    Name des Scripts: yourPEG
    Author: dutziman
    Beschreibung: Bennent JPEG-Bilder einheitlich, komprimiert sie und erstellt Thumbnails.
    Benutzung: ./yourpeg <verzeichnis>
    Code:
    Code:
    #!/bin/bash
    
    echo "creating thumbnail directory _thumbnails_$1"
    mkdir _thumbnails_$1
    
    echo "going into $1..."
    cd $1
    
    for dir in *;
    do
    
     if [ -d "$dir" ]
     then
     
     echo "-- going into $1/$dir..."
     cd "$dir"
     
     echo "-- creating thumbnail directory _thumbnails_$1/$dir..."
     mkdir ../../_thumbnails_$1/$dir
     
     i=1;
     for file in *;
     do
     
     if [[ "$file" =~ "\.[jJ][pP][eE]?[gG]$" ]]
     then
     
     echo "-- -- renaming $file to $dir-$i.jpg"
     mv "$file" "$dir-$i.jpg"
     
     echo "-- -- -- compressing $dir-$i.jpg to 80% quality..."
     /usr/bin/convert -quality 80% "$dir-$i.jpg" "$dir-$i.jpg"
     
     echo "-- -- -- creating thumbnail for $dir-$i.jpg..."
     /usr/bin/convert -quality 90% -thumbnail 180 "$dir-$i.jpg" "../../_thumbnails_$1/$dir/$dir-$i.jpg"
     
     else
     
     echo "-- -- omitting $file: not a jpeg image
     
     fi
     
     i=$((i+1));
     
     done
     
     echo "-- leaving $1/$dir..."
     cd ..
     
     else
     
     echo "-- omitting $dir: not a directory"
     
     fi
     
    done
    
    echo "leaving $1..."
    cd ..
     
  6. #5 4. Februar 2007
    AW: Bash-Scripte

    Name des Scripts: nscan v0.1
    Author: Crack02
    Beschreibung: primitiver textbasierender nachbau von grimps ping und grimps companion in einem
    Benutzung: ./script

    ist frühes alphastadium und noch recht verbuggt, aber soweit funktionstüchtig.
    benötig wird busybox, nmap und ftp-upload

    Code:
    #!/bin/bash
    
    # Usage
    if [ -z $1 ]
    then
     echo "Usage: $0 {target specification}"
     echo "TARGET SPECIFICATION:"
     echo "Can pass hostnames, IP addresses, networks, etc."
     echo "Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254"
     exit
    fi
    
    # Ordner in /tmp erstellen
     #rm -rf /tmp/nscan
     mkdir /tmp/nscan >> /dev/null
    # Scan
     echo "Starting Scan on: $1"
     nmap -p21 -oG /tmp/nscan/.ftpraw $1 > /dev/null
    
    # ip war ok? 
     quittest=`cat /tmp/nscan/.ftpraw|wc -l`
     if [ $quittest -le 2 ]
     then
     exit 0
     fi 
     
    # Auswertung 
    cat /tmp/nscan/.ftpraw |grep open|awk {'print $1 $2'}|sed -e 's/Host:/ /' |grep -n ' '|sed -e 's/:/ :/' > /tmp/nscan/.ftpclean
     
    ftpall=`cat /tmp/nscan/.ftpclean |wc -l`
    i='0'
    ftp='0'
    
    echo "Scan complete. Starting test"
    # datei erzeugen
    dd if=/dev/urandom of=/tmp/nscan/.testdatei bs=1k count=1 
    
    while [ $i -le $ftpall ]
    do
     i=`expr $i + 1`
     cat /tmp/nscan/.ftpclean |grep "$i :"|grep -m 1 ' ' > /tmp/nscan/.ftp_aktuell
     cat /tmp/nscan/.ftp_aktuell |sed -e "s/$i : //" > /tmp/nscan/.ftp_toscan
     ftp=`cat /tmp/nscan/.ftp_toscan`
     ftp-upload -v --ignore-quit-failure -h $ftp /tmp/nscan/.testdatei
    done
     
  7. #6 8. Februar 2007
    AW: Bash-Scripte

    Name des Scripts: Bug-Scanner
    Author: Muschelsuppe
    Beschreibung: Ähnlich Triton - Eine Liste mit Seiten wird nach einem bestimmten Bug abgesucht. Netcat muss installiert sein.
    Benutzung: ./scanner.sh internetseiten.txt
    Code:

    Code:
    #!/bin/bash 
    
    FILE='/something/bug.php'
    GOOD='Iam a GOOOOOD Key'
    
    while read LINE; do
     OUTPUT=`printf 'GET '$FILE' HTTP/1.0\n\n' | nc -w 5 ${LINE} 80 | grep $GOOD`
     if [ "$OUTPUT" != "" ]
     then
     echo ${LINE}: $OUTPUT
     fi
    done < $1
    
     
  8. #7 3. Oktober 2007
    AW: Bash-Scripte

    Name des Scripts: mpc2mp3
    Author: Bernie
    Beschreibung: konvertiert mpc nach mp3
    Benutzung: ./mpc2mp3 FILE [FILE...]
    Benoetigt: lame (LAME MP3 Encoder) und mppdec (Musepack)
    Code:
    Code:
    #!/bin/bash
    
    
    ################################################
    # Convert alle given Files from mpc 2 mp3 #
    # Author: Bernie #
    # Date: 10.07.2005 #
    ################################################
    
    
    #configuration (better high bitrate because mpc already suxx)
    BITRATE=256
    
    
    #check usage
    if [ $# -lt 1 ]; then
     echo "USAGE: $0 FILE [FILE...]";
    fi
    
    
    #loop through the arguments
    while ! [ -z "$1" ]; do
    
     #debug
     #echo "$1"
    
     #omit directories
     if [ -d "$1" -o "$1" = "" ]; then
     continue
     fi
    
     #check if we have an mpc (stupid file, so we try a bit hex)
     H_FIRSTLINE=`hexdump -c "$1" | head -n 1 | tr -d ' ' | sed s/0000000//g`
     
     #debug
     #echo "$H_FIRSTLINE"
     
     #now check if this first line matches mpc and convert or don't
     if echo "$H_FIRSTLINE" | grep -q '^MP+\\a'; then
     echo "Converting $1"
    
     #in my world all mpc files end with .mpc, mp3s with .mp3
     NEWNAME=`echo "$1" | sed 's/\.mpc$//g'`
     NEWNAME="$NEWNAME.mp3"
     
     #now convert (und halt die :sprachlos:)
     mppdec --silent "$1" - | lame --quiet -b $BITRATE - "$NEWNAME"
     
     else
     echo "Omitting non-mpc file $1"
     fi
    
     #next one
     shift
     
    done
    
     
  9. #8 6. Januar 2008
    AW: Bash-Scripte

    Name des Scripts: audioconv v0.2
    Author: antisystem
    Beschreibung: konvertiert audiodateien in das gewünschte format
    Benutzung: chmod +x und nach /usr/bin kopieren (oder symlink erstellen)
    Benoetigt: mplayer und die jeweiligen codecs (siehe code)

    Sonstiges: das script ist bei weitem noch nicht fertig, es funktioniert aber alles. ich werde versuchen noch mehr formate miteinzubeziehen, eine abfrage zur bitrate und evtl. eine übernahme der tags zu ermöglichen.
    Updates werden sofort eingearbeitet.

    Code:
    #!/bin/bash 
    # (c) 2008 antisystem@jabber.org
    # simple bash script for audio-converting using mplayer
    # converts audiofiles in the current dir to a specific output format
    # depends on mplayer, lame, oggenc, flac, faac, mppenc
    #
    # tag-info support: wip
    
     
    for s in *.*; do
     file=`echo "$s"|tail --bytes=4`; 
    done
     
    case "$file" in
     "wma") source="wma" ;;
     "mp3") source="mp3" ;;
     "ogg") source="ogg" ;;
     "lac") source="flac" ;;
     "aac") source="aac" ;;
     "m4a") source="m4a" ;;
     "mp4") source="mp4" ;;
     "ape") source="ape" ;;
     "mpc") source="mpc" ;;
     *) echo "unsupported source file" 
     exit 0 ;;
    esac 
    
    echo
    echo "Source file is $source"
    echo
    PS3='Choose output-file format: '
    echo
    select output in "mp3" "ogg" "flac" "aac" "m4a" "mpc"
    
    do
    case "$output" in
     "mp3") 
     for i in *.$source; do 
     neuername=`echo "$i"|sed -e 's/'$source'$/'$output'/'`;
     echo "$i -> $neuername"; 
     mplayer -ao pcm:fast "$i"; 
     lame -m j -h --vbr-new -b 192 "audiodump.wav" -o "$neuername"; 
     done 
     rm "audiodump.wav"
     ;;
     "ogg")
     for i in *.$source; do 
     neuername=`echo "$i"|sed -e 's/'$source'$/'$output'/'`;
     echo "$i -> $neuername"; 
     mplayer -ao pcm:fast "$i"; 
     oggenc -q 5 "audiodump.wav" -o "$neuername"; 
     done 
     rm "audiodump.wav"
     ;;
     "flac")
     for i in *.$source; do 
     neuername=`echo "$i"|sed -e 's/'$source'$/'$output'/'`;
     echo "$i -> $neuername"; 
     mplayer -ao pcm:fast "$i"; 
     flac -5 "audiodump.wav" -o "$neuername"; 
     done 
     rm "audiodump.wav"
     ;;
     "aac")
     for i in *.$source; do 
     neuername=`echo "$i"|sed -e 's/'$source'$/'$output'/'`;
     echo "$i -> $neuername"; 
     mplayer -ao pcm:fast "$i"; 
     faac -q 100 "audiodump.wav" -o "$neuername"; 
     done 
     rm "audiodump.wav"
     ;; 
     "m4a")
     for i in *.$source; do 
     neuername=`echo "$i"|sed -e 's/'$source'$/'$output'/'`;
     echo "$i -> $neuername"; 
     mplayer -ao pcm:fast "$i"; 
     faac -q 100 -w "audiodump.wav" -o "$neuername"; 
     done 
     rm "audiodump.wav"
     ;; 
     "mpc")
     for i in *.$source; do 
     neuername=`echo "$i"|sed -e 's/'$source'$/'$output'/'`;
     echo "$i -> $neuername"; 
     mplayer -ao pcm:fast "$i"; 
     mppenc --xtreme "audiodump.wav" "$neuername"; 
     done 
     rm "audiodump.wav"
     ;; 
    esac
    
    break
    
    done
    
    
    echo "Delete source file?" 
    echo
    echo "[y]es, [n]o"
    
    read delete
    
    case "$delete" in
     "y") rm -v "$i" ;;
     "n") ;;
    esac
    
    exit 1
     
  10. #9 31. Januar 2008
    AW: Bash-Scripte

    Name des Scripts: background_script
    Author: Bernie
    Beschreibung: wechselt den Background nach der Urzeit
    Benutzung: ./background_script
    Benoetigt: gnome
    Code:
    Code:
    date=`date +%H`
    
    if [ 7 -lt $date -a 11 -gt $date ]; then
     gconftool-2 -s /desktop/gnome/background/picture_filename <pfad zum Bild> -t string
    
    elif [ 10 -lt $date -a 17 -gt $date ]; then
     gconftool-2 -s /desktop/gnome/background/picture_filename <pfad> -t string
    
    elif [ 16 -gt $date -a 22 -gt $date ]; then
     gconftool-2 -s /desktop/gnome/background/picture_filename <pfad> -t string
    
    else
     gconftool-2 -s /desktop/gnome/background/picture_filename <pfad> -t string
    fi
    
    
    
    
    Das ist natürlich nur ein Anhaltspunkt. Man kann das beliebig aufbohren auf Wochentage, Monate, die Zeitintervalle ändern...

    MfG
    bernie
     
  11. #10 29. Februar 2008
    AW: Bash-Scripte

    Name des Scripts: dsl

    Author: E-qualizer

    Beschreibung: Ermöglicht Neuverbindung nach einer Zwangstrennung des ISP
    Das war mein erster Versuch ein "sinvolles" Skript zu schreiben, also seit bitte nachsichtig mit meiner Syntax ;-)

    Benutzung: Backgroundskript

    Code:

    Code:
    #!/bin/bash
    
    
    Z=0
    until [ "$Z" -ge 5 ]
    do
    
    if ping -c 1 (z.B. IP von T-Online...)
    
     then
     echo "+ online +"
     sleep 60s
    
     else
     if ping -c 1 (z.B. IP von Google..)
    
     then
     echo "+ online +"
     sleep 60s 
     
     else
     echo "+ offline +"
     
     rcnetwork restart
     sleep 60s
    
     fi
    fi
    done
     
  12. #11 24. Dezember 2008
    AW: Bash-Scripte

    Hier ist nichts neues, mach ich mal was :p
    Kann alles selbst abgeändert werden.
    Ich benutz dieses Script meist für xChat

    Name des Scripts: now playing
    Author: Bibba
    Beschreibung: now playing Anzeige für MacOsX
    Benutzung: ./Name
    Code: Apple-Script
    Code:
    tell application "iTunes"
     set AlbumName to album of current track
     set ArtistName to artist of current track
     set Titel to name of current track
     set np to "np:" & ArtistName & " - " & Titel & " (" & AlbumName & " min)
    end tell
    Code: Bash-Script
    Code:
    #!/bin/bash
    osascript *PFAD*/nowplaying.scpt
     
  13. #12 20. Januar 2010
    AW: Bash-Scripte

    Name des Scripts: makesfv
    Author: Shir Khan
    Beschreibung: Erstellt für rar-Splitarchive (benannt nach dem Schema archiv.rar, archiv.r00, archiv.r01, archiv.r02, ... usw.) eine sfv-Datei, die dann archiv.sfv heißt und im selben Verzeichnis wie die Archive liegt.
    Benötigt: Das Programm cfv (Bei Ubuntu '$ sudo apt-get install cfv', bei Debian '# apt-get install cfv'
    Benutzung: ./makesfv.sh (oder wie auch immer ihr das Skript nennt)
    Code:
    Code:
    #/bin/bash
    
    dir=""
    echo "Bitte das Verzeichnis mit den Archiven angeben:"
    while true
     do
     read dir
     if [ -d "${dir}" ]; then
     echo "Angegebenes Verzeichnis: "${dir}""
     break
     else 
     echo "Verzeichnis '"${dir}"' existiert nicht. Bitte existierendes Verzeichnis eingeben!"
     fi
     done
    cd "${dir}"
    if ls | grep .rar > /dev/null; then
     for i in *.rar
     do
     file=$(echo "${i}" | cut -d "." -f1)
     echo -e "\nGefundenes rar-Archiv: "${i}""
     echo "Erstelle "${file}".sfv :"
     echo "cfv -C -f "${file}.sfv" "${file}.*"" 
     cfv -C -f "${file}".sfv "${file}".*
     echo "$(tail --lines=+3 "${file}".sfv)" > "${file}".sfv
     done
    else
     echo "Keine rar-Archive gefunden!"
     echo "Beende!"
    fi
     
  14. #13 17. Februar 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Bash-Scripte

    Name des Scripts: SFT-Loader
    Author: coach
    Beschreibung: Startet den SFT-Loader
    Benutzung: ./Name sft-datei.sft

    Code:
    #!/bin/sh
    LEECHER=[COLOR="Red"]/pfad/zur/leecher.exe[/COLOR]
    cd "`dirname "$1"`"
    WINEDEBUG="-all" wine $LEECHER `basename "$1"`
    
    dazu am besten unter /usr/share/applications/ eine .desktop-datei anlegen mit folgendem inhalt:
    Code:
    [Desktop Entry]
    Encoding=UTF-8
    Name=SFT-Loader
    Exec=[COLOR="Red"]pfad-und-name-des-scripts[/COLOR]
    MimeType=application/x-application-sft;
    Icon=[COLOR="Red"]euer-icon-mit-pfad[/COLOR]
    Terminal=false
    Type=Application
    Categories=Application;Network;
    StartupNotify=false
    
    und als icon könnt ihr das nehmen...mfg coach

    PS: am besten das script in /usr/bin und das icon unter /usr/share/icons packen;-) wenn ihr die sft-dateien damit verknüpft, sollte der sft-loader wie unter windows die datei sofort öffnen

    PPS: achja, es ist kein mechanismus eingebaut um zu erkennen, ob eine datei mit übergeben wurde. wenn dem nicht so ist, sagt der load 'datei nicht gefunden' und schmiert (bie mir zumindest) ab^^

    EDIT: und bevor ichs vergesse: sollte auch mit jeglichen sonderzeichen im pfad zurechtkommen;-)
     
  15. #14 18. Januar 2011
    AW: Bash-Scripte

    Name des Scripts: SouthParkDumper
    Author: DonW33d0
    Beschreibung: speichert den RTMP-Stream von southpark.de auf der Festplatte und erzeugt eine mkv Datei.
    Benutzung: ./script.sh [Staffel] [Episode] | Zahlen müssen immer 2stellig sein also "01" anstatt "1".

    Code:

    Anmerkung:
    Ich habe dieses Script quick&dirty letzte Nacht aus einer Laune raus geschrieben also bitte kein geflame über die Form.

    Welche Programme werden vorrausgesetzt:
    - ffmpeg
    - rtmpdump
    - mkvmerge


    Viel Spass damit oder auch nicht ;)
     
  16. #15 8. September 2011
    AW: Bash-Scripte

    Name des Scripts: Uploaded.to Downloader
    Author: Crack02
    Beschreibung: Ein einfaches Skript um einen oder mehrere Links von Uploaded.to Premium zu saugen.

    Größeres Update: Multithreading hinzugefügt.

    Fürs Auge isses noch nix, weil die Wartemeldungen sich häufen und zwischen drin wget seine Rückmeldungen reinquetscht, aber es erfüllt seinen Zweck. Am besten in einer screen Shell laufen lassen.

    Solche Skripte gibt es natürlich noch andere im Web. Das Problem bei allen war, dass wget oder curl beim Download der Datei einen falschen Namen gegeben haben. Anstelle von 123456.rar hieß die datei fghuehw, was dem Downloadlink bei Uploaded entspricht. Da man wget nicht direkt verklickern konnte, dass der richtige Dateinamen im HTTP Header übertragen wird, wird jetzt vor dem eigentlichen Download selber erstmal "ausgekundschaftet" (mit spider), um den Dateinamen aus dem Header abgreifen zu können.
    Dieser wird dann an den eigentlichen Download an wget übergeben und die Datei mit dem richtigen Namen gespeichert.

    Features:
    • Bei Erstnutzung werden die Logindaten für den Premium Account abgefragt und in einem Cookie hinterlegt, welches bei weiterer Nutzung erkannt wird.
    • Das Skript erkennt die drei Linkvarianten von uploaded (ul.to/123456, uploaded.to/file/123456 und uploaded.to/file/123456/123456.txt)
    • Ein einzelner Downloadlink kann als Parameter übergeben werden, mehrere Downloadlinks können aus einer einfachen Textdatei ausgelesen werden.

    Es fehlen noch eine Hand voll Sicherheitsabfragen für ungültige Downloadlinks oder falsche Premium-Daten, d.h. die eingegebenen Daten sowie die Links sollten gültig und online sein, da das Skript sonst abkackt oder zu spinnen anfängt.
    Wurde ergänzt.

    Wget muss installiert sein.

    Was vielleicht demnächst noch dazu kommt:
    • Multi-Threading bei Nutzung einer Linkliste.
    • Skipfunktion für lokal bereits Vorhandene Dateien.
    Benutzung:
    Code:
    Usage with single download link: ./uploaded.download.sh http://uploaded.to/file/123456
    or http://ul.to/123456
    or http://uploaded.to/file/123456/123456.txt
    For multiple download links, put them in a text file: ./uploaded.download.sh links.txt

    Code:
    #!/usr/local/bin/bash
    # by Crack02 @ RR Board
    
    
    # Hier die maximale Anzahl an parallelen Downloads angeben. Standard = 5
    vorgabe=5
    
    
    ## Ab hier nichts mehr ändern.
    # Exit Trap
    :mad:it() {
    echo ""
    echo "CTRL+C detected. Cleaning /tmp and killing downloads..."
    echo ""
    wgets=`ps |grep wget|wc -l`
    echo "Killing `echo $wgets` wget processes"
    killall wget
    rm /tmp/*wget.log
    rm /tmp/zaehler
    kill $zaehlerpid
    echo "Done and exit."
    exit 0
    }
    trap :mad:it SIGINT SIGTERM
    
    
    
    # COOKIE ERSTELLEN
    if [ ! -f ~/.ulcookie.txt ]
    then
     echo "No cookie has been detected. Creating one for you."
     echo -n "Enter your uploaded.to user id: "
     read ulid
     echo -n "Enter your Uploaded.to password: "
     read ulpw
     wget --save-cookies ~/.ulcookie.txt --post-data "id=$ulid&pw=$ulpw" http://uploaded.to/io/login
     echo "Cookie written to ~/.ulcookie.txt"
     rm login
    fi
    
    # HILFE
    if [ -z $1 ]
    then
     echo "Usage with single download link: $0 http://uploaded.to/file/123456"
     echo "or http://ul.to/123456"
     echo "or http://uploaded.to/file/123456/123456.txt"
     echo "For multiple download links, put them in a text file: $0 links.txt"
     exit 0
    fi
    
    
    # Einige Tests und Abfragen
    
    type wget > /dev/null 2>&1
    if [ ! $? = 0 ]; then
     echo "wget not found! Cant continue without wget. Exiting."
     exit 1
    fi
    
    if [ ! -w $PWD ]; then
     echo "`pwd` is not writeable. Check permissions. Exiting."
     exit 1
    fi
    
    
    
    
    # Zufälligen Wget Log generieren und whoami anfüttern.
    wgetlog=`echo $RANDOM`.wget.log
    whoami=`whoami`
    
    # LINKCHECKER
    linkcheck() {
     #cleanup
     logsda=`ls /tmp |grep .wget.log`
     if [ -z $logsda ]; then
     echo ""
     else
     rm /tmp/*.wget.log
     fi
    
     if [[ ! $1 =~ ^http\://(uploaded\.to/file|ul\.to)/[a-zA-Z0-9]+ ]]; then
     return 9
     fi
    
     wget -S --spider --load-cookies ~/.ulcookie.txt $1 -o /tmp/$wgetlog
     filedown=`cat /tmp/$wgetlog|grep "404 Not Found"`
     accdown=`cat /tmp/$wgetlog|grep "recursion is disabled"`
    
     if [[ ! -z $filedown ]]; then
     return 8
     fi
    
     if [[ ! -z $accdown ]]; then
     return 7
     fi
    }
    
    # Überwachung auf laufende Downloads
    zaehlermachen() {
     if [ -z /tmp/zaehler ]; then
     touch /tmp/zaehler
     fi
    
     while [[ 1 == 1 ]]
     do
     zaehler=`ps -u | grep wget | grep $whoami | wc -l`
     echo $zaehler > /tmp/zaehler
     sleep 1
     done
    }
    zaehlermachen $vorgabe &
    zaehlerpid=`echo $!`
    
    
    # Parallelen Download aus Datei
    if [ -f $1 ]
    then
     echo "Loading from links in file..."
     echo "Max Threads = `echo $vorgabe`"
    
    
     for i in `cat $1`
     do
     linkcheck $i
     returnvalue=`echo $?`
     if [[ $returnvalue = 0 ]]; then
    
     echo "Current threads: `echo $zaehler`"
     while [[ `cat /tmp/zaehler` -ge $vorgabe ]]
     do
     echo "Maximum threads reached. Awaiting downloads to finish..."
     sleep 2
     done
    
     echo "Grabbing filename from server..."
     filename=`cat /tmp/$wgetlog|grep filename= |awk -F "\"" '{ print $2 }'`
     echo "Filename found: $filename. Downloading..."
    
     wget --progress=bar:force -nv --load-cookies ~/.ulcookie.txt -O "$filename" $i &
    
     else
     case $returnvalue in
     7 ) echo "Login data invalid or server problem. Retrying after other downloads have been finished."
     echo $i >> /tmp/retry;;
     8 ) echo "Link seems to be down. Skipping...";;
     9 ) echo "Link regex seems to be invalid. Skipping...";;
     esac
     fi
     done
    
     # Fehlgeschlagene Downloads erneut versuchen.
     if [ -f /tmp/retry ]
     then
     echo "Found retry file. Retrying those..."
     for i in `cat /tmp/retry`
     do
     linkcheck $i
     returnvalue=`echo $?`
     if [[ $returnvalue = 0 ]]; then
     echo "Current threads: `echo $zaehler`"
     while [[ `cat /tmp/zaehler` -ge $vorgabe ]]
     do
     echo "Maximum threads reached. Awaiting downloads to finish..."
     sleep 1
     done
    
     echo "Grabbing filename from server..."
     filename=`cat /tmp/$wgetlog|grep filename= |awk -F "\"" '{ print $2 }'`
     echo "Filename found: $filename. Downloading..."
    
     wget --progress=bar:force -nv --load-cookies ~/.ulcookie.txt -O "$filename" $i &
    
     else
     case $returnvalue in
     7 ) echo "`echo $i` seems to be still :mad:ed up. Will write this link to /tmp/skipped"
     echo $i >> /tmp/skipped;;
     8 ) echo "Link seems to be down. Skipping...";;
     9 ) echo "Link regex seems to be invalid. Skipping...";;
     esac
     fi
     done
     fi
    
     echo "Last download has been started in the background."
     echo "There are still `echo $zaehler` wget threads running. Wget will yell if they are finished."
     echo "Exiting"
    
    # Download einzelner Link
    else
     linkcheck $1
     returnvalue=`echo $?`
    
     if [[ $returnvalue = 0 ]]; then
    
     if [ -z $2 ]; then
     echo "grabbing filename from server..."
     filename=`cat /tmp/$wgetlog|grep filename= |awk -F "\"" '{ print $2 }'`
     echo "Filename found: $filename. Downloading..."
     else
     filename=`echo $2`
     echo "Using $2 as filename."
     fi
    
     wget --progress=bar:force --load-cookies ~/.ulcookie.txt -O "$filename" $1
     else
     case $returnvalue in
     7 ) echo "Login data invalid or Server problem. Try again.";;
     8 ) echo "Link seems to be down.";;
     9 ) echo "Link regex seems to be invalid or if you selected a file it does not exist.";;
     esac
     fi
    fi
    
    
    # Downloadüberwachung beenden
    kill $zaehlerpid
    rm /tmp/zaehler
    if [ -f /tmp/retry ]; then
     rm /tmp/retry
    fi
    
    # Falls Links wegen Fehlern übersprungen wurden, zeige diese an.
    if [ -f /tmp/skipped ]; then
     echo ""
     echo "skipped links:"
     echo ""
     cat /tmp/skipped
     echo ""
     echo "You can find these links in /tmp/skipped too."
    fi
    exit 0
    
    Bekannte Probleme: Manchmal kommt der Fehler "Login data invalid or Server problem.". Das Problem ist, dass über wget nicht genau diffierenziert werden kann, ob die Logindaten falsch sind oder der Server gerade ein Problem hat. Im Zweifelsfall die "defekten" versuchen neu zu laden.
    Möglicherweise defekte Downloads werden jetzt einer Datei gespeichert und am Ende erneut geladen. Falls diese auch fehlschlägt, bekommt man am Ende eine Liste aller potentiell kaputten Downloads.

    Ggf. den Interpreter anpassen. Die meisten Linux-Distros verwenden #!/bin/bash
    Danke an Cable für seine Regex-Hilfe :thumbsup:
     

  17. Videos zum Thema
Die Seite wird geladen...
Similar Threads - Bash Scripte
  1. Antworten:
    4
    Aufrufe:
    909
  2. Antworten:
    0
    Aufrufe:
    969
  3. Antworten:
    4
    Aufrufe:
    350
  4. sudo in bash-scripten

    C4rc4ss , 26. Juni 2009 , im Forum: Linux & BSD
    Antworten:
    4
    Aufrufe:
    3.135
  5. Comments zum Thema "Bash-Scripte"

    Inder , 10. Oktober 2006 , im Forum: Linux & BSD
    Antworten:
    6
    Aufrufe:
    1.224