Benutzerbefehl „lesen“ beim Ausführen von Remote-Skripten über SSH

Benutzerbefehl „lesen“ beim Ausführen von Remote-Skripten über SSH

Lassen Sie mich zunächst meine Situation erklären. Ich habe einen Alias ​​in .bashrc:

doscript () { ssh root@server$1 -p2202 "bash -s" < ~/scripts/$2 $3; }

Ich habe ein Skript, das im Wesentlichen aus mehreren Aktionen besteht, wie:

check current settings
read comment
do actions
write $comment in a file
restart service

Also führe ich einen Befehl aus

doscript server scriptname parameter

Der Teil „Kommentar lesen“ funktioniert jedoch nicht. Anstatt zu warten, bis ich den Kommentar eingebe, wird er sofort ausgeführt und fügt der Kommentardatei nichts hinzu.

Gibt es in diesem Fall eine Möglichkeit, eine Variable einzugeben?

Antwort1

Der übliche Weg, dies zu tun, ohne zu viel zu ändern, besteht darin, die Datei auf die Remote-Maschine zu kopieren und sie dann auszuführen, wodurch stdin für Ihre TTY-Eingabe verfügbar bleibt. Beispiel:

scp -P 2202 ~/scripts/$2 root@server$1:./myscript
ssh -t root@server$1 -p2202 bash ./myscript $3

oder wenn Sie scpdiese Zeile nicht ersetzen können durch

ssh root@server$1 -p2202 'cat >./myscript' <~/scripts/$2

verwandte Informationen