Wie kann ich diese Aufgabe automatisieren?
1) Sie sind bei A. 2) Sie ssh in B. 3) Sie führen ein Skript bei B aus, das einen bei A bekannten Parameter benötigt.
Zuerst dachte ich, ich könnte den Wert vielleicht senden, als ich die Verbindung mit ssh öffnete. Dann, wahrscheinlich einfacher, zwischen 1) und 2) scp das gesamte Skript an die gleiche Stelle bei B (anstelle des alten). Aber nach wie vor, wie kann ich ausführen das Skript an B? (Das heißt, wie man diesen letzten Schritt automatisiert. Natürlich könnte ich ihn nach ssh manuell ausführen.)
Ein anderer Gedanke, vielleicht ssh ganz verwerfen - ich habe eine Webseite bei B, könnte das Skript also irgendwie über eine "unter der Haube" -Webschnittstelle aufgerufen werden?
Oder würden Sie es ganz anders machen?
Antworten:
Dies wird
myscript foobar
auf dem Server ausgeführt.quelle
~/.elm/aliases
.)"
) im Gegensatz zu einfachen ('
) wichtig. Die Verwendung von double bedeutet, dass die Shell auf Ihrem lokalen Computer die Variable erweitert und dann denssh
Befehl ausführt . Wenn einzelne verwendet würden, würde die lokale Shell den Befehl nicht berühren, der wörtlich gesendet wird, aber in der Remote-Shell noch erweitert wird.$myparameter
Leerzeichen auf der Serverseite aufgeteilt werden , wenn sie Leerzeichen enthalten. Bash'sprintf
hat ein%q
Format, das Sie verwenden können. Ich habe einen Beispielcode, der hier jedoch nicht passt. Ich werde eine neue Antwort darauf erstellen.(Dies ist eine Fortsetzung meines Kommentars zur akzeptierten Antwort .)
Beachten Sie, dass
$myparameter
Leerzeichen auf der Serverseite aufgeteilt werden , wenn sie Leerzeichen enthalten. Bashs printf hat ein%q
Format, das Sie verwenden können. Beispiel:quelle
Wenn es sicher ist , anzunehmen , dass
$myparameter
wird nicht einfache Anführungszeichen enthalten (ansonsten siehe hier oder benutzenprintf '%q' ...
Lösung von janmoesen), können Sie nur um einfache Anführungszeichen setzen$myparameter
die Split-on-Raumproblem auf der Serverseite zu vermeiden.quelle