Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Befehl in einem anderen Screen per Sript ausführen

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Benutzeravatar
Bomber8475
Member
Member
Beiträge: 119
Registriert: 25. Nov 2003, 00:32

Befehl in einem anderen Screen per Sript ausführen

Beitrag von Bomber8475 »

Hab da ein kleines Problemchen:

Und zwar starte ich ein Programm in einem anderen Screen

Code: Alles auswählen

screen -d -m
Damit ich in der Console, nur wenn erforderlich, Befehle tippen kann (keine Shellbefehle sondern von dem Programm)
Nun kann ich das Programm in dem Screenfenster einfach mit "exit "beenden. Da ich das aber automatisieren will möchte ich einfach ein Script ausführen was mit diesen Exit Befehl in den anderen Screen "tippt" und ausführt.

Wenns jetzt ein Shellbefehl wäre würde wahrscheinlich

Code: Alles auswählen

screen -X Befehl
ausreichen, aber es kommt nur die Meldung das "exit" nicht bekannt ist..

Kann mir da jemand weiter helfen?
Mein Fli4L-Router
irc.freenode.net ... /join #linux-club.de
using --> http://www.ubuntulinux.org/
Benutzeravatar
imat
Member
Member
Beiträge: 69
Registriert: 7. Apr 2004, 12:48
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von imat »

Bei -X ist nicht ein Shellbefehl gemeint, sondern ein screen-commando (Tastaturkommando) wenn du den Screen also beenden willst musst du

screen -X quit

senden. Die möglichen Commandos stehen in der Manpage von screen in den () "Klammern" zu der Tastenbelegung

z.B.

C-a C-\ (quit) Kill all windows and terminate
screen.
Benutzeravatar
Bomber8475
Member
Member
Beiträge: 119
Registriert: 25. Nov 2003, 00:32

Beitrag von Bomber8475 »

Na eben das will ich ja nicht.

Ich will dem Programm was in dem Screen läuft ein Befehl senden was das Proggie interpretieren soll und nicht die Shell oder der screen.

In der Art wie es bei EOF funktioniert, wenn man z.B. einem FTP was schicken will oder was empfangen will. Da werden ja auch die FTP spezifischen Befehle gesendet und ausgeführt. Sowas soll nun in dem anderen Fenster passieren..
Mein Fli4L-Router
irc.freenode.net ... /join #linux-club.de
using --> http://www.ubuntulinux.org/
Benutzeravatar
imat
Member
Member
Beiträge: 69
Registriert: 7. Apr 2004, 12:48
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von imat »

Ah, jetzt verstehe ich dich :)

Ich weis nicht ob das die optimale Lösung ist aber:

- Datei mit dem Inhalt erstellen z.B. /tmp/screeninput
- dann

screen -X readbuf /tmp/screeninput

(liest die Datei in den copy&paste Puffer)

screen -X paste .

(pasted den Pufferinhalt)
Benutzeravatar
Bomber8475
Member
Member
Beiträge: 119
Registriert: 25. Nov 2003, 00:32

Beitrag von Bomber8475 »

Es funktioniert auch nicht.

beim

Code: Alles auswählen

screen -X readbuf
willer er schon auf den anderen screen zugreifen
Mein Fli4L-Router
irc.freenode.net ... /join #linux-club.de
using --> http://www.ubuntulinux.org/
Benutzeravatar
imat
Member
Member
Beiträge: 69
Registriert: 7. Apr 2004, 12:48
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von imat »

Versuch doch bitte einmal ganz detailiert, am besten mit einem Beispiel, zu erklären was genau du machen willst. Eventuell gibts ja ne ganz andere Lösung für dein Problem .....
Benutzeravatar
Bomber8475
Member
Member
Beiträge: 119
Registriert: 25. Nov 2003, 00:32

Beitrag von Bomber8475 »

Okay:

Ich starte per Script ein Java Programm namens Applejuice:

Code: Alles auswählen

screen -d -m java -jar ajcore.jar
Wenn ich das Programm ohne Datenverlust stoppen will muß ich in das mit Screen erzeugte Fenster wechseln und "exit" tippen, eine andere Möglichkeit bietet das Proggie soweit ich weiß nicht. Wenn ich

Code: Alles auswählen

killall java
tippe hab ich einen Datenverlust.

Nun will ich in dem Script das Proggie normal schließen, als wenn ich in den Screen gehe und "exit" tippe.
Mein Fli4L-Router
irc.freenode.net ... /join #linux-club.de
using --> http://www.ubuntulinux.org/
Wosh
Newbie
Newbie
Beiträge: 1
Registriert: 6. Sep 2005, 17:44
Wohnort: Rheine
Kontaktdaten:

Beitrag von Wosh »

Das Thema ist zwar schon etwas älter, habe aber auch eine Frage zu screen.

Erstmal könnte es bei dir so klappen:

screen -r java -X readbuf /tmp/screeninput

Und schon bin ich bei meinem Problem, denn so wie ich das sehe wertet screen bei diesem beispiel nur das "readbuf" nicht aber den Parameter "/tmp/screeninput" und genau das brauche ich, bei mir soll es den kompletten befehl an das fenster übergeben, macht screen aber leider nicht.

Gibt es dafür ein anderen Parameter oder geht das überhaupt irgendwie???
Chriki
Newbie
Newbie
Beiträge: 1
Registriert: 14. Feb 2005, 17:08

So geht's

Beitrag von Chriki »

Hallo,

so sollte es mit attachted/detachted screen gleichermaßen klappen:

Code: Alles auswählen

screen -S <PID_des_screen> -X readbuf /tmp/screeninput
und dann

Code: Alles auswählen

screen -S <PID_des_screen> -X paste .
Man muss darauf achten, dass der Dateiparameter von "readbuf" ein absoluter Pfad ist.

Ciao,
Chriki TM.
Antworten