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.
Dieses Script startet auch alle anderen außer dem 11ten Script:
Bei dem Versuch das 11te zu starten, kommt immer diese Fehlermeldung:
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
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
#!/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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 229429
Url: https://administrator.de/forum/problem-beim-starten-eines-bash-shell-scripts-mit-einem-anderen-229429.html
Ausgedruckt am: 05.04.2025 um 08:04 Uhr
14 Kommentare
Neuester Kommentar
wollte ich auch gerade fragen. Der paßt da gar nich thin, wenn man da nicht noch einen passenden Parameter mitgibt.
lks
Zitat von @Fabian-Haas:
... (foto1) ...
... (foto2) ...
... (foto3) ...
Ich weiß mir echt keinen Rat, was ich da falsch mache
.
Hoffentlich kann mir einer von euch helfen.
... (foto1) ...
... (foto2) ...
... (foto3) ...
Ich weiß mir echt keinen Rat, was ich da falsch mache
Hoffentlich kann mir einer von euch helfen.
Lade mal die Bilder ins Forum hoch und dann sehen wir weiter.
lks
Edit: Link & typo
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:
Wenn du hingegen das Script über den Shell-Interpreter __aufrufst__
__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
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
$: sh einzeloperationen.sh
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
Nichts, aber man sieht, ob die rechte korrekt gesetzt sind.
Ich weiß jetzt echt nicht weiter. 
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.
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 ...
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