Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
-
Pit910
- Beiträge: 19
- Registriert: 11.03.2014 15:03:25
Beitrag
von Pit910 » 11.03.2014 15:05:44
Hallo,
ich habe mich hier eben angemeldet weil ich ein Problem habe, ein Shellscript auf meinem Server auszuführen.
Der Inhalt ist so:
Und es soll so laufen:
Das Script soll in den Screen wechseln und in diesem Screen dann den Command "stop" schreiben und die "Enter" taste drücken.
Wenn ich das Script ausführe, dann wechselt er zwar in den Screen führt aber den Command stop nicht aus.
Woran liegt das?
Danke im Vorraus!
-
Drache
- Beiträge: 772
- Registriert: 22.11.2009 05:49:55
Beitrag
von Drache » 11.03.2014 15:19:45
1. Nachfrage: Shellscript heißt bash? Oder vielleicht was anderes?
2. Nachfrage: Was ist die Variable "stop" denn eigentlich … oder willst du nur den Text "stop" schreiben, oder hast du dir ein weiteres Programm/oder einen alias angelegt, der mit dem Aufruf stop (ich kenne jedenfalls unter Debian kein entsprechendes Programm) etwas anfangen kann? → Also wann wird die Variable, die du mit $ aufrufst denn gefüllt?
3. Nachfrage: hast du die Shebang
einfach nur hier weggelassen, oder vergessen?
“Don't you think that if I were wrong, I'd know it?” (Dr. Sheldon Cooper)
XFCE: alt,steinhart,langweilig,immer noch da.
-
Pit910
- Beiträge: 19
- Registriert: 11.03.2014 15:03:25
Beitrag
von Pit910 » 11.03.2014 16:59:03
Drache hat geschrieben:1. Nachfrage: Shellscript heißt bash? Oder vielleicht was anderes?
2. Nachfrage: Was ist die Variable "stop" denn eigentlich … oder willst du nur den Text "stop" schreiben, oder hast du dir ein weiteres Programm/oder einen alias angelegt, der mit dem Aufruf stop (ich kenne jedenfalls unter Debian kein entsprechendes Programm) etwas anfangen kann? → Also wann wird die Variable, die du mit $ aufrufst denn gefüllt?
3. Nachfrage: hast du die Shebang
einfach nur hier weggelassen, oder vergessen?
2. Ich habe in diesem Screen eine Minecraft-Server Anwendung laufen die ich über den Befehl "stop" beenden kann. Dieser Befehl muss einfach nur dort eingegeben werden, wenn ich im Screen bin gebe ich einfach stop ein und der Server fährt runter.
3. Nein hatte ich nicht drin.
-
Drache
- Beiträge: 772
- Registriert: 22.11.2009 05:49:55
Beitrag
von Drache » 11.03.2014 17:07:20
Pit910 hat geschrieben:
2. Ich habe in diesem Screen eine Minecraft-Server Anwendung laufen die ich über den Befehl "stop" beenden kann. Dieser Befehl muss einfach nur dort eingegeben werden, wenn ich im Screen bin gebe ich einfach stop ein und der Server fährt runter.
3. Nein hatte ich nicht drin.
Okay, wenn ich das richtig verstanden habe sollte dein Shellskript folgendermaßen aussehen:
dann das Skript ausführbar machen
und dann sollte es mit dem /Pfad/Namen des Skripts als Aufruf getan sein.
“Don't you think that if I were wrong, I'd know it?” (Dr. Sheldon Cooper)
XFCE: alt,steinhart,langweilig,immer noch da.
-
Pit910
- Beiträge: 19
- Registriert: 11.03.2014 15:03:25
Beitrag
von Pit910 » 11.03.2014 17:11:07
Drache hat geschrieben:Pit910 hat geschrieben:
2. Ich habe in diesem Screen eine Minecraft-Server Anwendung laufen die ich über den Befehl "stop" beenden kann. Dieser Befehl muss einfach nur dort eingegeben werden, wenn ich im Screen bin gebe ich einfach stop ein und der Server fährt runter.
3. Nein hatte ich nicht drin.
Okay, wenn ich das richtig verstanden habe sollte dein Shellskript folgendermaßen aussehen:
dann das Skript ausführbar machen
und dann sollte es mit dem /Pfad/Namen des Skripts als Aufruf getan sein.
Danke für deine Antworten. Aber wenn ich das Script starte dann wechselt er zwar in den Screen aber stop wird nicht ausgegeben!
ich starte das so ./stop.sh
-
Patsche
- Beiträge: 3263
- Registriert: 21.06.2013 01:47:54
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: /home/10001101001
Beitrag
von Patsche » 11.03.2014 17:13:19
Und wenn du es so schreibst?
Du könntest auch ein
ausprobieren.
-
Pit910
- Beiträge: 19
- Registriert: 11.03.2014 15:03:25
Beitrag
von Pit910 » 11.03.2014 17:25:53
Patsche hat geschrieben:Und wenn du es so schreibst?
Du könntest auch ein
ausprobieren.
Mit beiden leider nicht.
Es öffnet sich der Screen. Wenn ich aus dem Screen dann rausgehe, führt er den Befehl dann aber aus!
-
smutbert
- Beiträge: 8350
- Registriert: 24.07.2011 13:27:39
- Wohnort: Graz
Beitrag
von smutbert » 11.03.2014 18:04:47
Ok, von screen habe ich keine Ahnung, aber das Verhalten ist einigermaßen klar. Die Shell arbeitet die Befehele nacheinander ab: zuerst startet es screen und wenn das beendet ist führt es den nächsten Befehl aus
Du müsstest also zB screen den auszuführenden Befehl irgendwie als Parameter mitgeben, wenn du zB eine screen-Sitzung namens test hast
Code: Alles auswählen
$ screen -r
There is a screen on:
32754.test (2014-03-11 18:01:54) (Attached)
There is no screen to be resumed.
kannst du mit
den Befehl ls -al ausführen.
-
Jumper0
- Beiträge: 25
- Registriert: 30.09.2013 20:34:44
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von Jumper0 » 19.03.2014 15:41:53
Hi,
so führst du zum Beispiel ein Backup des Minecraft-Servers in der Screen-Konsole aus.
Code: Alles auswählen
screen -S minecraft -p 0 -X eval "stuff \"save-all\"\\015"
Hoffentlich kann dir das weiterhelfen !
-
roli
- Beiträge: 3174
- Registriert: 10.09.2003 17:39:58
Beitrag
von roli » 20.03.2014 09:08:31
Pit910 hat geschrieben:2. Ich habe in diesem Screen eine Minecraft-Server Anwendung laufen die ich über den Befehl "stop" beenden kann. Dieser Befehl muss einfach nur dort eingegeben werden, wenn ich im Screen bin gebe ich einfach stop ein und der Server fährt runter.
Wenn ich das ganze richtig verstanden habe, könnte "expect" dein Problem lösen, siehe z.B. hier:
Programme fernsteuern mit expect
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
-
Cae
- Beiträge: 6349
- Registriert: 17.07.2011 23:36:39
- Wohnort: 2130706433
Beitrag
von Cae » 20.03.2014 14:33:30
Nochmal zur Verdeutlichung, du willst screen -X verwenden, wie in den Posts gegen Ende gezeigt wurde. Die ganzen Versuche mit stop als eigenem Befehl sind zum Scheitern verurteilt.
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
-
habakug
- Moderator
- Beiträge: 4314
- Registriert: 23.10.2004 13:08:41
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von habakug » 20.03.2014 14:59:51
Hallo!
Das geht so:
Das XXXX ist die Nummer (hier 2255) des Screens, wie in "screen -list" ausgegeben:
Code: Alles auswählen
$ screen -list
There is a screen on:
2255.pts-0.leppi (Detached)
1 Socket in /run/screens/S-hawk.
Das "`echo -ne '\015'`" simuliert die Eingabetaste.
Gruss, habakug
edit:
Wenn die Session schon irgendwo anders "attached" ist, geht es natürlich auch mit dem kleinen "-x". Also der gewünschte Befehl würde etwa so lauten: