fabian-haas
Goto Top

Problem beim Starten eines Bash-Shell-Scripts mit einem anderen

Hallo,

Ich habe folgendes Bash-Script geschrieben, welches nach einer Eingabe des Benutzers ein bestimmtes anderes Bash-Script starten soll.
#!/bin/bash -


# root-Rechte "schön" bekommen 
  sudo echo " ------------------------"  
  echo " -                      -"  
  echo " -   Samba Verwaltung   -"  
  echo " -                      -"  
  echo " ------------------------"  

while true
 do

   # zeigt die verschiedenen Möglichkeiten/Tools an
     echo " 1/2 - Schüler-Benutzer anlegen/löschen"  
     echo ""  
     echo " 3/4 - Lehrer-Benutzer anlegen/löschen"  
     echo ""  
     echo " 5/6 - Gruppe anlegen/löschen"  
     echo ""  
     echo " 7 - Benutzer zu einer Gruppe hinzufügen"  
     echo ""  
     echo " 8 - Benutzer aus einer Gruppe entfernen"  
     echo ""  
     echo " 9 - Benutzer-Informationen anzeigen"  
     echo ""  
     echo " 10 - Alle Benutzer löschen"  
     echo ""  
     echo " 11 - Einzeloperationen durchführen"  
     echo ""  

   # deklariert die Variable "SCRIPT" 
     echo " Bitte geben Sie eine Zahle von 1 bis 10 ein um das jeweilige Tool zu öffnen: "  
     read SCRIPT

   # startet das ausgewählte Script/Tool
     if [ $SCRIPT -eq 1 ] 
          then sudo /srv/samba/schueler_anlegen.sh
       elif [ $SCRIPT -eq 2 ]
          then sudo /srv/samba/schueler_entfernen.sh
       elif [ $SCRIPT -eq 3 ]
          then sudo /srv/samba/lehrer_anlegen.sh
       elif [ $SCRIPT -eq 4 ]
          then sudo /srv/samba/lehrer_entfernen.sh
       elif [ $SCRIPT -eq 5 ]
          then sudo /srv/samba/gruppe_anlegen.sh
       elif [ $SCRIPT -eq 6 ]
          then sudo /srv/samba/gruppe_entfernen.sh
       elif [ $SCRIPT -eq 7 ]
          then sudo /srv/samba/benutzer_zu_gruppe_hinzufuegen.sh
       elif [ $SCRIPT -eq 8 ]
          then sudo /srv/samba/benutzer_aus_gruppe_entfernen.sh
       elif [ $SCRIPT -eq 9 ]
          then sudo /srv/samba/benutzer_informationen_anzeigen.sh
       elif [ $SCRIPT -eq 10 ]
          then sudo /srv/samba/alle_benutzer_entfernen.sh
       elif [ $SCRIPT -eq 11 ]
          then sudo /srv/samba/einzeloperationen.sh
       else echo " Bitte geben Sie ein Zahl von 1 bis 10 ein: "  
     fi

   # wartet 3 Sekunden und löscht dann den Bildschirminhalt
     sleep 3
     tput clear

 done
Dieses Script startet auch alle anderen außer dem 11ten Script:
#!/bin/bash -

  echo ""  
  echo " -------------------------"  
  echo " -                       -"  
  echo " -   Einzeloperationen   -"  
  echo " -                       -"  
  echo " -------------------------"  
  echo ""  
  echo ""  
  echo ""  
  
  # zeigt die verschiedenen Möglichkeiten/Tools an
    echo ""  
    echo " 1 - Schüler entfernen"  
    echo ""  
    echo " 2 - Lehrer entfernen"  
    echo ""  
    echo " 3 - Schüler anlegen"  
    echo ""  
    echo " 4 - Lehrer anlegen"  
    echo ""  
    echo " 5 - Benutzer sperren"  
    echo ""  
    echo " 6 - Benutzer entsperren"  
    echo ""  
    
  # deklariert die Variable "SCRIPT" 
    echo " Bitte geben Sie eine Zahle von 1 bis 6 ein: "  
    read SCRIPT
    
  # startet das ausgewählte Script/Tool
    if [ $SCRIPT -eq 1 ] 
         then echo " Bitte geben Sie den Namen des Schülers ein, den Sie löschen wollen: "  
         
                read USERNAME
         
              # löscht die Konten
                smbpasswd -x $USERNAME
                userdel -r $USERNAME
         
              # löscht dessen eigene Datei, dessen Datei mit seinen Freigaben und dessen Eintrag in der Datei aller Schüler
                rm -f /srv/samba/benutzer/$USERNAME.txt
                rm -f /srv/samba/shares/$USERNAME.txt
                sed -i "/z:${USERNAME}:z/d" /srv/samba/aschueler.txt  
               
              # startet erneut das Samba-Verwaltungsscript
                sudo /srv/samba/samba_verwaltung.sh
             
      elif [ $SCRIPT -eq 2 ]
         then echo " Bitte geben Sie den Namen des Lehrers ein, den Sie löschen wollen: "  
         
                read USERNAME
         
              # löscht die Konten
                smbpasswd -x $USERNAME
                userdel -r $USERNAME
                
              # löscht dessen eigene Datei, dessen Datei mit seinen Freigaben und dessen Eintrag in der Datei aller Lehrer
                rm -f /srv/samba/benutzer/$USERNAME.txt
                rm -f /srv/samba/shares/$USERNAME.txt
                sed -i "/z:${USERNAME}:z/d" /srv/samba/alehrer.txt  
         
              # startet erneut das Samba-Verwaltungsscript
                sudo /srv/samba/samba_verwaltung.sh
         
      elif [ $SCRIPT -eq 3 ]
         then echo " Bitte geben Sie den Namen des Schülers ein, den Sie anlegen wollen: "  
         
                read USERNAME
         
              # überprüft ob der Benutzer bereits existiert
                if [ ! -e /srv/samba/benutzer/$USERNAME.txt ]; then
                
              # deklariert die Varriable "PW" 
                PW=$(tr -cd '[:alnum:]' < /dev/urandom | fold -w8 | head -n1)  
                
              # legt die Konten an
                useradd -g schueler -G share -c 'Samba User' -m -s '/bin/false' $USERNAME  
                echo -e "$PW\n$PW\n"|smbpasswd -a -s $USERNAME  
                rm -r -f /home/$USERNAME/*.*

              # schreibt den Benutzernamen und das Passwort in die "neueSchueler-Datei" 
                echo -e "\n $USERNAME $PW" >> /srv/samba/nschueler.txt  

              # erstellt für den Benutzer eine eigene Datei mit seinem Benutzernamen und Passwort
                echo -e "$USERNAME:$PW" >> /srv/samba/benutzer/$USERNAME.txt  

              # erstellt für den Benutzer eine eigene Datei mit seinen Freigaben
                echo -e "" >> /srv/samba/shares/$USERNAME.txt  
                sed -i "1d" /srv/samba/shares/$USERNAME.txt  

              # schreibt den Benutzernamen in die "alleSchüler-Datei" 
                echo -e "z:$USERNAME:z" >> /srv/samba/aschueler.txt  

                else
                echo " $USERNAME existiert bereits."  

                fi
                
              # startet erneut das Samba-Verwaltungsscript
                sudo /srv/samba/samba_verwaltung.sh
                
      elif [ $SCRIPT -eq 4 ]
         then echo " Bitte geben Sie den Namen des Lehrers ein, den Sie anlegen wollen: "  
         
                read USERNAME
         
              # überprüft ob der Benutzer bereits existiert
                if [ ! -e /srv/samba/benutzer/$USERNAME.txt ]; then
                
              # deklariert die Varriable "PW" 
                PW=$(tr -cd '[:alnum:]' < /dev/urandom | fold -w8 | head -n1)  
                
              # legt die Konten an
                useradd -g lehrer -G share -c 'Samba User' -m -s '/bin/false' $USERNAME  
                echo -e "$PW\n$PW\n"|smbpasswd -a -s $USERNAME  
                rm -r -f /home/$USERNAME/*.*

              # schreibt den Benutzernamen und das Passwort in die "neueLehrer-Datei" 
                echo -e "\n $USERNAME $PW" >> /srv/samba/nlehrer.txt  

              # erstellt für den Benutzer eine eigene Datei mit seinem Benutzernamen und Passwort
                echo -e "$USERNAME:$PW" >> /srv/samba/benutzer/$USERNAME.txt  

              # erstellt für den Benutzer eine eigene Datei mit seinen Freigaben
                echo -e "" >> /srv/samba/shares/$USERNAME.txt  
                sed -i "1d" /srv/samba/shares/$USERNAME.txt  

              # schreibt den Benutzernamen in die "alleLehrer-Datei" 
                echo -e "z:$USERNAME:z" >> /srv/samba/alehrer.txt  
              
                else
                echo " $USERNAME existiert bereits."  
                
              # startet erneut das Samba-Verwaltungsscript
                sudo /srv/samba/samba_verwaltung.sh
                
      elif [ $SCRIPT -eq 5 ]
         then echo " Bitte geben Sie den Namen des Benutzers ein, den Sie sperren wollen: "  
         
                read USERNAME
         
              # sperrt den Benutzer
                smbpasswd -d $USERNAME
                
                echo " "  
                echo " $USERNAME wurde gesperrt"  
                echo " "  
                
              # startet erneut das Samba-Verwaltungsscript
                sudo /srv/samba/samba_verwaltung.sh
         
      elif [ $SCRIPT -eq 6 ]
         then echo " Bitte geben Sie den Namen des Benutzers ein, den Sie entsperren wollen: "  
         
                read USERNAME
              
              # sperrt den Benutzer
                smbpasswd -e $USERNAME
                
                echo " "  
                echo " $USERNAME wurde entsperrt"  
                echo " "  
              
      else echo " Bitte geben Sie eine Zahl von 1 bis 6 ein: "  
    fi
    
    sleep 5
    
 # startet erneut das Samba-Verwaltungsscript
   sudo /srv/samba/samba_verwaltung.sh
Bei dem Versuch das 11te zu starten, kommt immer diese Fehlermeldung:
d3d26fde480e2f1545836781cfb828af

Ich bin gerade am Verzweifeln, da ich keine Ahnung habe, warum das nicht funktioniert. ich hoffe es kann mir hier jemand helfen.

Vielen Dank im Vorraus
Fabian Haas

Content-Key: 229429

Url: https://administrator.de/contentid/229429

Printed on: April 16, 2024 at 22:04 o'clock

Member: Arano
Solution Arano Feb 11, 2014, updated at Feb 13, 2014 at 20:55:23 (UTC)
Goto Top
Guten Abend,

noch mal schnell vorm schlafen gehen *g*

  1. fehlt da in Zeile 135 ein fi ? und
  2. wozu der Binderstrich in der Shebang ?


~Arano
PS. Angenehme Nachtruhe face-smile
Member: Lochkartenstanzer
Solution Lochkartenstanzer Feb 11, 2014, updated at Feb 13, 2014 at 20:55:21 (UTC)
Goto Top
Zitat von @Arano:

2. wozu der Binderstrich in der Shebang ?

wollte ich auch gerade fragen. Der paßt da gar nich thin, wenn man da nicht noch einen passenden Parameter mitgibt.

lks
Member: Fabian-Haas
Fabian-Haas Feb 13, 2014 updated at 13:46:04 (UTC)
Goto Top
Zitat von @Arano:
  1. fehlt da in Zeile 135 ein fi ? und
  2. wozu der Binderstrich in der Shebang ?

Erstmal danke für die Anworten. Ich hab jetzt das Script entsprechend angepasst.

Wenn ich jetzt aber das 11te Script starte kommt diese Fehlermeldung:
285b3110f0cb9f094cd6d1c8c71d84ef
(foto1), dabei existiert das Script und wurde vorher mit dem Befehl
sudo chmod +x /srv/samba/einzeloperationen.sh

ausführbar gemacht.

Starte ich es aber über das Terminal mit den Befehlen:
sudo -i
sh /srv/samba/einzeloperationen.sh
kommt folgendes:
31c6647f5c861fa6da8ea116e070f51b
(foto2)
starte ich dann z.B. die 1te option kommt folgende Fehlermeldung:
5ca06c05f65984c8a235c76f3b7e321c
(foto3)

Ich weiß mir echt keinen Rat, was ich da falsch mache face-sad.

Hoffentlich kann mir einer von euch helfen.
Mfg
Fabian Haas
Member: Lochkartenstanzer
Lochkartenstanzer Feb 13, 2014 updated at 13:28:40 (UTC)
Goto Top
Zitat von @Fabian-Haas:

... (foto1) ...
... (foto2) ...
... (foto3) ...

Ich weiß mir echt keinen Rat, was ich da falsch mache face-sad.

Hoffentlich kann mir einer von euch helfen.

Lade mal die Bilder ins Forum hoch und dann sehen wir weiter.

lks

Edit: Link & typo
Member: Fabian-Haas
Fabian-Haas Feb 13, 2014 updated at 13:47:34 (UTC)
Goto Top
Okay ich habe jetzt die Bilder weiter oben eingefügt thx.
Member: Arano
Arano Feb 13, 2014 at 16:12:01 (UTC)
Goto Top
Hi

Wie sehen denn die ganzen Dateirechte von "einzeloperationen.sh" und dessen Verzeichnis aus ?
Ich hoffe ich erzähle jetzt keinen Blödsinn...
Die Ausführrechte sind wichtig, wenn du direkt das Script ausführen möchtest:
$: ./einzeloperationen.sh
Wenn du hingegen das Script über den Shell-Interpreter __aufrufst__
$: sh einzeloperationen.sh
__Führst__ du sh __aus__ und übergibst ihm den Scriptnamen als "Parameter", welches dann __gelesen__ werden muss - also __Leserechte__ benötigt.
Wenn dann vielleicht dem Verzeichnis auch noch die Leserechte fehlen (was root vermutlich nicht stören sollte) kann es zu weiteren "Meldungen" kommen Das ist jetzt aber reine Spekulation

Wie schon gefragt, kontrolliere mal die gesamten Rechte der Datei und dessen Verzeichnis.


~Arano
Member: Fabian-Haas
Fabian-Haas Feb 13, 2014 at 16:29:37 (UTC)
Goto Top
Hmm, aber ich führe doch alles mit root-rechten aus, wenn in dem Script
sudo /srv/samba/einzeloperationen.sh 
steht, oder?

Vielen Dank schonmal
Fabian Haas
Member: Fabian-Haas
Fabian-Haas Feb 13, 2014 at 17:08:33 (UTC)
Goto Top
Weiß den keiner Rat? ;-(
Member: Lochkartenstanzer
Lochkartenstanzer Feb 13, 2014 updated at 17:39:02 (UTC)
Goto Top
Moin,

Mach mal
ls -ld /srv /srv/samba /srv/samba/*sh
echo $PATH


und poste das ergebnis (copy&paste und nicht jpg/Bild) hier rein.

lks

Nachtrag: sind /srv oder /srv/samba eigenständgige Filesysteme?
Member: Fabian-Haas
Fabian-Haas Feb 13, 2014 at 17:37:46 (UTC)
Goto Top
Okay dann kommt das hier:
test@test-VirtualBox:~$ ls -ld /srv /srv/samba /srv/samba/*sh 
drwxr-xr-x 3 root root 4096 Feb 12 23:42 /srv
drwxr-xr-x 5 root root 4096 Feb 12 23:46 /srv/samba
-rwxr-xr-x 1 root root 1007 Feb 12 23:42 /srv/samba/alle_benutzer_entfernen_quelle.sh
-rwxr-xr-x 1 root root  870 Feb 12 23:42 /srv/samba/alle_benutzer_entfernen.sh
-rwxr-xr-x 1 root root 1861 Feb 12 23:42 /srv/samba/benutzer_aus_gruppe_entfernen_quelle.sh
-rwxr-xr-x 1 root root  534 Feb 12 23:42 /srv/samba/benutzer_aus_gruppe_entfernen.sh
-rwxr-xr-x 1 root root 1139 Feb 12 23:42 /srv/samba/benutzer_informationen_anzeigen_quelle.sh
-rwxr-xr-x 1 root root  718 Feb 12 23:42 /srv/samba/benutzer_informationen_anzeigen.sh
-rwxr-xr-x 1 root root 1838 Feb 12 23:42 /srv/samba/benutzer_zu_gruppe_hinzufuegen_quelle.sh
-rwxr-xr-x 1 root root  536 Feb 12 23:42 /srv/samba/benutzer_zu_gruppe_hinzufuegen.sh
-rwxr-xr-x 1 root root 6704 Feb 12 23:42 /srv/samba/einzeloperationen.sh
-rwxr-xr-x 1 root root 1125 Feb 12 23:42 /srv/samba/gruppe_anlegen_quelle.sh
-rwxr-xr-x 1 root root  414 Feb 12 23:42 /srv/samba/gruppe_anlegen.sh
-rwxr-xr-x 1 root root 1203 Feb 12 23:42 /srv/samba/gruppe_entfernen_quelle.sh
-rwxr-xr-x 1 root root  624 Feb 12 23:42 /srv/samba/gruppe_entfernen.sh
-rw-r--r-- 1 root root 4785 Feb 12 23:42 /srv/samba/installation.sh
-rwxr-xr-x 1 root root 2441 Feb 12 23:42 /srv/samba/lehrer_anlegen_quelle.sh
-rwxr-xr-x 1 root root  619 Feb 12 23:42 /srv/samba/lehrer_anlegen.sh
-rwxr-xr-x 1 root root 1192 Feb 12 23:42 /srv/samba/lehrer_entfernen_quelle.sh
-rwxr-xr-x 1 root root  622 Feb 12 23:42 /srv/samba/lehrer_entfernen.sh
-rwxr-xr-x 2 root root 2122 Feb 12 23:42 /srv/samba/samba_verwaltung.sh
-rwxr-xr-x 1 root root 2328 Feb 12 23:42 /srv/samba/schueler_anlegen_quelle.sh
-rwxr-xr-x 1 root root  629 Feb 12 23:42 /srv/samba/schueler_anlegen.sh
-rwxr-xr-x 1 root root 1478 Feb 12 23:42 /srv/samba/schueler_entfernen_quelle.sh
-rwxr-xr-x 1 root root  631 Feb 12 23:42 /srv/samba/schueler_entfernen.sh
test@test-VirtualBox:~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
test@test-VirtualBox:~$ 
Member: Fabian-Haas
Fabian-Haas Feb 13, 2014 at 18:51:24 (UTC)
Goto Top
Aber was genau bringt mir das jetzt?

Ich weiß jetzt echt nicht weiter. face-sad

Mfg
Fabian Haas
Member: Lochkartenstanzer
Solution Lochkartenstanzer Feb 13, 2014 updated at 20:54:27 (UTC)
Goto Top
Zitat von @Fabian-Haas:

Aber was genau bringt mir das jetzt?

Nichts, aber man sieht, ob die rechte korrekt gesetzt sind.

Ich weiß jetzt echt nicht weiter. face-sad


Jetzt mal Butter bei die Fische:

mach das alles mal als root, d.h. vorher mit sudo su - root werden und dann erst die skripte starten. und zwar ohne Eingabe von sudo.

Funktioniert es dann immer noch nicht?


lks

PS: Kann es sein, daß das Skript noch die eingabe des paßwortes erwartet und wenn dies falsch ist, als gewöhnlicher User auf die Schnauze fällt?

PPS: Wir machen das hier freiwillig und ehrenamtlich, wenn du keine Geduld hast, mußt Du Dir jemanden kommen lassen, der das gegen Geldzahlung auch sofort erledigt. Das mache ich übrigens auch, deswegen antworte ich nicht imerm sofort, wenn ich gerade am "Geldverdienen" bin.
Member: Fabian-Haas
Fabian-Haas Feb 13, 2014 at 20:54:09 (UTC)
Goto Top
Zitat von @Lochkartenstanzer:
PPS: Wir machen das hier freiwillig und ehrenamtlich, wenn du keine Geduld hast, mußt Du Dir jemanden kommen lassen, der das
gegen Geldzahlung auch sofort erledigt. Das mache ich übrigens auch, deswegen antworte ich nicht imerm sofort, wenn ich
gerade am "Geldverdienen" bin.

Tut mir leid, wenn ich zu aufdringlichlich war, ich stand ein wenig unter Stress und wahr da wahrscheinlich zu ungeduldig und habe das nicht gemerkt.

ZU meinem Problem: das hat sich gelöst, ich glaube aber, dass es zu schwierig wäre das hier zu beschreiben, daher ein Link zu der Lösung meines Problems: http://forum.ubuntuusers.de/topic/keine-bashscripte-ausfuehrbar-bin-bas ...

Nochmals vielen Dank für die Hilfe face-big-smile
Mfg
Fabian Haas
Member: Lochkartenstanzer
Lochkartenstanzer Feb 13, 2014 at 21:47:02 (UTC)
Goto Top
Zitat von @Fabian-Haas:

ZU meinem Problem: das hat sich gelöst, ich glaube aber, dass es zu schwierig wäre das hier zu beschreiben, daher ein
Link zu der Lösung meines Problems: http://forum.ubuntuusers.de/topic/keine-bashscripte-ausfuehrbar-bin-bas ...

Nunja, das ist normalerweise das erste, daß man prüft ob irgendwelche falschen nichtdruckbaren Zeichen drin sind. Deinem Code den Du oben gepostet hast, sieht man das leider nciht an. Aber wenn das nun gelöst ist, hat sich das ja erledeigt.

lks