2016-08-08 7 views
0

Ich habe ein Bash-Programm mit whiptail erstellt, um dem Benutzer eine grafische Benutzeroberfläche zu geben, um ihr System einzurichten. Aus irgendeinem Grund führt mein Skript keinen meiner bash Befehle aus, stattdessen scheint es durch die Ausgabe in meine log.txt Datei zu laufen, aber es werden keine Pakete installiert.Whiptail läuft nicht meine Bash-Befehle

STATUS=0 
    touch log.txt 
    while [ $STATUS -lt 100 ]; do 
     # update apt repos 
     apt-get update 
     wait 
     echo "apt-get update" >> log.txt 
     let STATUS=STATUS+15 
     echo $STATUS 
     # update apt package 
     apt-get upgrade 
     wait 
     echo "apt-get upgrade" >> log.txt 
     let STATUS=STATUS+15 
     echo $STATUS 
     # install required packages 
     apt-get -y git-all nmap hydra 
     wait 
     echo "apt-get -y git-all nmap hydra" >> log.txt 
     let STATUS=STATUS+10 
     echo $STATUS 
     # install rbenv 
     git clone https://github.com/rbenv/rbenv.git ~/.rbenv 
     wait 
     echo "cloning rbenv" >> log.txt 
     echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile 
     echo 'exporting PATH' >> log.txt 
     ~/.rbenv/bin/rbenv init 
     wait 
     echo 'initializing rbenv' >> log.txt 
     git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build 
     wait 
     echo "cloning ruby-build" >> log.txt 
     rbenv install 2.1.4 
     wait 
     echo "installing ruby 2.1.4" >> log.txt 
     let STATUS=STATUS+25 
     echo $STATUS 
     done | whiptail --gauge "Setting Up Neo (THIS WILL TAKE SOME TIME)..." 40 78 0 

Also, meine while-Schleife, um zu bestätigen tatsächlich läuft, habe ich angefangen, Dinge zu log.txt Echo. Hier ist die Ausgabe:

apt-get update 
apt-get upgrade 
apt-get -y git-all nmap hydra 
cloning rbenv 
exporting PATH 
initializing rbenv 
cloning ruby-build 
installing ruby 2.1.4 

Was habe ich falsch gemacht?

Antwort

0

Erstens, da Sie keine Hintergrundprozesse haben, macht wait nichts.

Zweitens, seit whiptail liest stdin, müssen Sie sicherstellen, dass stdout von allen apt-get, git, rbenv, usw. Befehle zu stderr oder besser zu Ihrem Protokoll umgeleitet werden.

# update apt repos 
    echo "apt-get update" >> log.txt 
    apt-get update >>log.txt 2>&1 
    ((STATUS += 15)) 
    echo $STATUS 

    # update apt package 
    echo "apt-get upgrade" >> log.txt 
    apt-get upgrade >> log.txt 2>&1 
    ((STATUS += 15)) 
    echo $STATUS 

und so weiter.

+0

Das macht Sinn ... die Stderr Stdout Weiterleitungen töten mich! – Godzilla74