Ich arbeite an der Automatisierung einer Wartungsroutine, bei der ein Skript gestartet und gestoppt wird, das in einer Bildschirmsitzung ausgeführt wird. Mein Ansatz ist es, die Bildschirmsitzung abzubrechen und anschließend neu zu starten und den Befehl in einem Skript auszuführen. Dabei können Sie sowohl einen Bildschirm erstellen als auch einen Befehl übergeben, ohne eine Verbindung zum Bildschirm herstellen zu müssen.
Ich habe jedoch Schwierigkeiten damit. Ich kann den Bildschirm korrekt erstellen, ohne ihn anhängen zu müssen screen -d -m -S screen_name
. Wenn ich jedoch einen Befehl ausführe, der auf Folgendem basiert:
screen -S screen_name-X stuff "command 1"'echo -ne '\015''"command 2"'echo -ne '\015''
Das Echo -ne '\ 015' wird mit Backticks und nicht mit einfachen Anführungszeichen umschlossen. Es soll simulieren, dass der Benutzer die Eingabetaste drückt, während die von mir verwendeten Befehle in ein Verzeichnis verschoben und ein dort befindliches Skript ausgeführt werden. Dieser Befehl funktioniert, aber nur, wenn der Bildschirm nach seiner Erstellung angehängt wurde. Da ich versuche, den Prozess der Erstellung des Bildschirms und der Ausführung der darin enthaltenen Befehle zu automatisieren, möchte ich vermeiden, dass ich ein Skript anhängen und trennen muss. Ich werde versuchen, ein Shell-Skript zu erstellen, das die Befehle enthält, die ich auf dem Bildschirm ausführen und gemäß meinen Ergebnissen bearbeiten muss.
Gibt es eine Möglichkeit, einen Bildschirm zu erstellen und einen Befehl innerhalb des Bildschirms entweder in einem Befehl auszuführen oder ohne nach dem Erstellen, aber vor der Ausführung des Befehls, eine Verbindung zum Bildschirm herstellen zu müssen?
Danke im Voraus.
** Update - Nachdem ich versucht habe, die Befehle, die ich ausführen muss, in ein Shell-Skript einzufügen, konnte ich erfolgreich einen Bildschirm erstellen und die Befehle in diesem Bildschirm ausführen, aber ich bekomme das Verhalten, das auftritt, wenn das Skript nicht mehr ausgeführt wird Der Bildschirm wird ebenfalls geschlossen. Dies sollte kein Problem sein, da das Skript ein Protokollierungsskript ist, das nur mit dem Wissen des Sys-Administrators oder über das Skript, das ich zu entwickeln versuche, beendet werden sollte. Es wäre jedoch vorzuziehen, das Bildschirmsetup so zu gestalten, dass der Bildschirm angezeigt wird verschwindet nicht, wenn das Skript gestoppt wird. Ist es möglich, dieses Verhalten zu erreichen? **
.screenrc
die die Zeile enthält zombie kr
, in der ein fertiges Fenster geöffnet bleibt, und Sie können drücken k
, um winodw zu schließen oder r
den Befehl erneut im Fenster auszuführen. Ich habe dies für meine Standard .screenrc.