heusmich
Anmeldungsdatum: 30. Mai 2021
Beiträge: 12
|
Hallo zusammen, wie kann ich in einem Bash Script eine "Enter"- oder "Space"-Eingabe automatisch ausführen lassen?
Problem ist folgendes: Ich muss in einem Script "screen" ausführen und anschließend in Screen weitere Commands ausführen. Problem ist nur, dass nach der Eingabe von "screen" entweder "Space" oder "Enter" durch den User gedrückt werden muss, damit es weitergeht.
Frage ist nun, wie ich das im Bash-Script eintragen muss, damit entweder "Enter" oder "Space" automatisch ausgeführt wird.
Kann mir hier einer helfen? MfG
heusmich
|
marant...
Anmeldungsdatum: 2. Februar 2021
Beiträge: 645
|
wie kann ich in einem Bash Script eine "Enter"- oder "Space"-Eingabe automatisch ausführen lassen?
bspw. https://wiki.ubuntuusers.de/xdotool/ Wenn es im Hintergrund läuft wird's etwas schwieriger. (dem Fenster zuweisen) Denke, das hatte ich falsch verstanden, geht wohl darum, daß bei bestimmter Eingabe autom. Reaktion erfolgen soll.
|
heusmich
(Themenstarter)
Anmeldungsdatum: 30. Mai 2021
Beiträge: 12
|
Richtig, darum geht es im Generellen.
Wenn ich in Putty "screen" eingebe, erscheint eine Meldung, die ich mit "Space" oder "Enter" bestätigen muss. Vorher kann ich keine weiteren Eingaben in Screen machen.
Und diese Bestätigung würde ich gerne automatisiert erfolgen lassen.
Die darauffolgenden Eingaben würden dann ja auch wieder automatisiert erfolgen. Hängt aktuell also erstmal nur an der einen Eingabe von "Space" oder "Enter"...
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
Versuch mal sowas, um einen Zeilenumbruch zu senden:
|
heusmich
(Themenstarter)
Anmeldungsdatum: 30. Mai 2021
Beiträge: 12
|
Geht leider nicht, Meldung: "No screen session found."
|
Doc_Symbiosis
Anmeldungsdatum: 11. Oktober 2006
Beiträge: 4378
Wohnort: Göttingen
|
Naja -X funktioniert auch nur mit einer existierenden screen-Session. Vielleicht kann man die Nachricht in der screenrc ausschalten?
https://unix.stackexchange.com/questions/33786/how-do-you-bypass-or-skip-the-intro-message-when-starting-screen#33789 Oder willst Du die noch weiterhin vorhanden haben?
|
heusmich
(Themenstarter)
Anmeldungsdatum: 30. Mai 2021
Beiträge: 12
|
Ich brauch die nicht zwingend.
Wie kann ich die ausschalten? EDIT: Hab was gefunden: https://unix.stackexchange.com/questions/33786/how-do-you-bypass-or-skip-the-intro-message-when-starting-screen
Mit "screen -q" geht es, ohne Dateien zu bearbeiten.
Ich werde mal testen, ob sich das entsprechend implementieren lässt und ich zum gewünschten Ziel komme. Melde mich dann nochmal, bis dahin schon mal vielen Dank!
😉
|
Doc_Symbiosis
Anmeldungsdatum: 11. Oktober 2006
Beiträge: 4378
Wohnort: Göttingen
|
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17548
Wohnort: Berlin
|
Interaktive Programme kann man mit expect steuern.
|
heusmich
(Themenstarter)
Anmeldungsdatum: 30. Mai 2021
Beiträge: 12
|
OK, ich komme jetzt mit "screen -q" in Screen rein, allerdings werden die darauffolgenden Commands aus dem Script nicht mehr ausgeführt.
Weiß jemand, warum das so ist?
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12801
|
Möglicherweise wäre es auch eine Option sich tmux anzuschauen. Ich habe diese Funktionalität nie gebraucht, aber tmux ist generell leistungsfähiger.
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11176
Wohnort: München
|
heusmich schrieb: OK, ich komme jetzt mit "screen -q" in Screen rein, allerdings werden die darauffolgenden Commands aus dem Script nicht mehr ausgeführt.
Weiß jemand, warum das so ist?
Weil die Screen-Session die Ausführung der nachfolgenden Befehle blockiert, solange sie aktiv ist - in der Screen-Session hast du ja eine andere Shell vor dir (vergleich mal den Wert der Variable $$ ). Man kann eine detachte Screen-Session erzeugen und Befehle draun ausführen, ohne sich zu attachen, also z.B.:
screen -dmS "TEST"
screen -S "TEST" -X stuff "ls -l^M"
screen -S "TEST" -X stuff "echo 'Hallo Welt'^M" Das gleiche mit tmux:
tmux new-session -d -s "TEST"
tmux send-keys -t my-session-name:0 "ls -l" ENTER
tmux send-keys -t my-session-name:0 "echo 'Hallo Welt" ENTER
Was auch machen kann, ist tmux ein Skript als Startargument mitzugeben (die Sitzung endet, wenn der letzte Befehl im Skript ausgeführt wurde):
tmux new-session -d -s "TEST" /pfad/zum/skript
|
heusmich
(Themenstarter)
Anmeldungsdatum: 30. Mai 2021
Beiträge: 12
|
Also bei mir funzt das irgendwie nicht.
Habe folgenden Befehl ausgeführt: screen -dmS TheForest xvfb-run --auto-servernum --server-args='-screen 0 640x480x24:32' wine $serverdir/TheForestDedicatedServer.exe -batchmode -nographics -savefolderpath "$serverdir/saves/" -log -configfilepath "$serverdir/saves/config/config.cfg" Er sagt mir danach zwar, dass der Server gestartet wurde, ich bekomme ihn aber in Steam und ingame nicht als aktiv angezeigt...
Ist an dem Command irgendwas falsch? PS: $serverdir wurde vorher definiert.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17548
Wohnort: Berlin
|
Ich kenne mich mit screen nicht aus - möglicherweise kommt man damit ja auch zum Ziel. Mit expect bin ich auch nicht sonderlichh vertraut, aber damit kommt Ihr ganz bestimmt weiter.
ist der Startpunkt, dann natürlich man expect , vielleicht gibt es auch gute Onlinedokus, womöglich auf Deutsch.
|
heusmich
(Themenstarter)
Anmeldungsdatum: 30. Mai 2021
Beiträge: 12
|
OK, nach viel rumprobieren habe ich es hinbekommen. Es gab scheinbar Probleme mit "$serverdir", damit konnte der Server nicht umgehen. Ist zwar komisch, da es in anderen Skripten funktioniert aber naja, egal. Bei Gelegenheit werde ich mir das nochmal anschauen. Habe "$serverdir" jetzt mit "/home/steam/theforest/" ersetzt, jetzt startet der Server und ich sehe ihn in den Steam-Favoriten und auch ingame.
Joinen ist ebenfalls möglich. Vielen Dank an alle für die Hilfe!
😀 👍
|