• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Von außerhalb interaktiv auf screen-Session zugreifen

Hallo!

Ich suche ne Möglichkeit, einer laufenden screen-Session einen String zu übergeben, den diese als Tastatureingabe verwurstet.
Konkret geht es darum, einen Server in screen kurz zu bitten, seine Dateien zu schließen, damit davon ein Backup gemacht werden kann. Anschließend darf der Server die Dateien wieder öffnen.

Ich hab bisher mit den Screen-befehlen rumgespielt, ich kann auch einer laufenden screen-Session einen Befehl schicken. Allerdings weiß ich noch nicht, wie ich es anstelle, daß die laufende screen-Session das dann an den Server weiterleitet,

Hat da wer ne Idee, wie man das hin bekommt?

Das Script soll zeitgesteuert zu ner unmöglichen Uhrzeit laufen, aber ich möchte mir weiterhin die Möglichkeit offen lassen, mich zur screen-Session zu verbinden, und manuell noch irgendwelche Befehle einzugeben.
 

nbkr

Guru
Was läuft denn im Screen? Meist reagieren Dienste auf SIGHUP Signale mit einem neuladen der Konfiguration, vielleicht kannst du das verwenden. Ansonsten würde ich die Screensession ganz abschießen und nach dem Backup neu starten.
 
Hallo!

Es ist ein Minecraft- also Spieleserver. Das Abschießen hieße, daß eingeloggte Mitspieler raus fliegen würden. Grade daher versteht Minecraft ja solche Befehle wie "Speichern und Dateien freigeben", um parallel kurz ein Backup anzulegen.

Aber nu hab ich es grade rausgefunden...

Der Befehl

screen -X stuff $'ls -l\n'

führt ein ls -l in der Screen session aus. Das etwas kryptische $'ls -l\n' sorgt dafür, daß das \n als ENTER gewertet wird.
 

currypaul

Newbie
Hallo EventHorizon2

ich bin mir des Alters dieses Threads bewusst, allerdings stehe ich gerade vor der selben Problematik und komme nicht weiter.
Kannst du mir vielleicht Auszüge von deinem Script hier posten oder mir anderweitig helfen?

Derzeit sieht das bei mir so aus:

Code:
#!/bin/sh
screen -S cd -X stuff $'/say test\n'

... und sollte eigentlich nur die Ausgabe "Test" auf den Server schmeissen. Am Ende soll es allerdings den Server stoppen damit ich ein Backup machen kann, oder besser noch die Dateien kurz befreien während gesichert wird.
Wie hast du das gelöst? Bei mir wird das trotz /n leider nur auf die Zeile der Session geschrieben und nicht abgesendet.

Danke vielmals im voraus
 
Oben