ubuntuusers.de

Shell Script andere Datei ausführen mit ./DATEI

Status: Ungelöst | Ubuntu-Version: Ubuntu 17.10 (Artful Aardvark)
Antworten |

Chryfi

Anmeldungsdatum:
5. Januar 2018

Beiträge: Zähle...

Hallo, Ich bin schon die ganze Zeit dabei ein Script zu schreiben womit man den sinusbot starten kann. Schaut es euch einfach mal selber an...

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
echo "#################################################"
sleep 2
useradd -p EinPasswort delete-me
sleep 1
chown -R delete-me:delete-me /opt/ts3soundboard
sleep 1
su delete-me
sleep 1
cd /opt/ts3soundboard
sleep 1
./sinusbot
sleep 2
logout
sleep 1
deluser delete-me
exit

Theoretisch müsste es doch funktionieren, praktisch tut es aber nicht... Eigentlich hatte ich vor einen screen erstellen zu lassen, da aber in einem user das script /dev/null ausgeführt werden muss, und mit logout oder exit das Shell script beendet wird anstatt sich vom user abzumelden und das /dev/null Script zu beenden, habe ich das aufgegeben. Es soll nur einmal den Bot starten, damit dann in der config.ini die Standard Einstellungen angefertigt werden, also ist es egal das der sinusbot dann stoppt wenn das Script beendet wird/ der User gelöscht wird. Findet jemand den Fehler?

Danke schon mal im vorraus.

Bearbeitet von rklm:

Syntaxhighlighting

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17606

Wohnort: Berlin

Chryfi schrieb:

Theoretisch müsste es doch funktionieren, praktisch tut es aber nicht...

Was genau tut es nicht? User erzeugen, user löschen, su, cd, ...?

Findet jemand den Fehler?

Wieso schläft das so viel? Wie startest Du das Script? Wieso hat es keinen Shebang? Wozu dient das exit am Schluss - endet es sonst nicht?

Chryfi

(Themenstarter)

Anmeldungsdatum:
5. Januar 2018

Beiträge: 17

Das Script wird mit exit beendet. Das was es nicht tut: ./sinusbot und ich weiß nich wie ich ausloggen soll. Das was es machen soll:

Ich will das es einen User erstellt Dann soll es in den User einloggen Dann einen screen erstellen und ./sinusbot starten Dann nach einer Zeit den screen beenden Dann aus dem User ausloggen Dann den User löschen Wie könnte man das machen? Ich starte das Script mit ./sinusbot_installer.sh Wofür brauche ich den Shebang?

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4450

Wohnort: Göttingen

Die Shebang für Shellskripte brauchst Du, damit die Cronumgebung bzw. Shell weiß, mit welchem Interpreter das Skript ausgeführt werden soll. Folgendes solltest Du also in der ersten Zeile einfügen:

#!/bin/bash

Bei dem deluser würde ich noch den Parameter -r verwenden, damit auch das Homeverzeichnis des Benutzers gelöscht wird.

Die ganzen sleep sind einfach überflüssig, wie user_unknown auch schon anmerkte.

Kommt von dem Skript denn eine Ausgabe?

Chryfi

(Themenstarter)

Anmeldungsdatum:
5. Januar 2018

Beiträge: 17

Es erstellt den User

echo "#################################################"
sleep 2
sleep 2
sleep 2
useradd -p EINPASSWORT delete-me 
su delete-me
cd /opt/ts3soundboard
./sinusbot <- scheint nicht zu funktionieren
sleep 2
logout
clear
clear

dann sagt es:

useradd: user 'delte-me' already exists

da ich das Script schon oft ausprobiert habe, gibt es den User schon, sollte aber kein Problem darstellen oder? Danach sollte es in den User sich anmelden. Ab der Nachricht, dass es den User schon gibt, kommt nur ein

$

links in der Eingabe. Wenn ich dann "exit" eingebe steht da

The bot will not run as root-user

und das Script macht weiter. Anscheinend funktioniert ./sinusbot und das logout aus dem user nicht... Ich denke mal, dass er sich noch in den User einloggen konnte, da bei Usern die mit einem Shell Script gemacht wurden anscheinend immer ein $ links steht (eigene Erfahrung), und auch in den Ordner cd'n konnte... aber ausführen anscheinend ja nicht ☹ Das schlafen habe ich jetzt hinter jeden Kommand entfernt. Nach den Nachrichten wie

echo "#  ./sinusbot -override-password YOURPASSWORD   #"
echo "#                                               #"
echo "#################################################"

sleep 2
sleep 2

soll aber das Schlafen bleiben damit der jenige genug Zeit hat die Nachricht zu lesen, und dann kann das Script weitermachen.

Antworten |