So verwenden Sie eine Bash-Profilfunktion, um eine Remote-Verbindung herzustellen und auf das Remote-Terminal zuzugreifen

428
thanasissdr

Ich möchte bash functionlokal schreiben (auf MacOS). Wenn Sie diese Funktion ausführen, lautet der erste Befehl, eine Verbindung zu einem Ubuntu Remote Desktop herzustellen ssh.

In einer Nussschale:

 my_func () { ssh blah blah blah; echo $VARIABLE; } 

Die gewünschte Ausgabe ist wie gewünscht /home/ubuntu/path/to/directory, aber ich bekomme nichts. Ich habe also den Eindruck, dass my_funcdas nur lokal funktioniert.

PS Die Umgebungsvariable $VARIABLEwird ~/.bashrcim Remote Desktop eingestellt.

0
Wo wird $ VARIABLE gesetzt? Auch die `;` s sind unnötig, Bash behandelt neue Zeilen als Kommando-Trennzeichen. Warum denkst du, dass es aus der Ferne funktionieren würde? Jesse_b vor 7 Jahren 0
@Jesse_b bearbeitet. thanasissdr vor 7 Jahren 0
Sie möchten es also auf SSH auf die Remote-Maschine und dann den Befehl ausführen: `echo $ VARIABLE`? Jesse_b vor 7 Jahren 0
@Jesse_b Genau (im Grunde möchte ich andere Dinge tun, aber dies ist ein wichtiger Schritt, um die nächsten Schritte zu erreichen). thanasissdr vor 7 Jahren 0

1 Antwort auf die Frage

0
Jesse_b

Wenn ich das richtig verstanden habe, sollte das funktionieren:

my_func () { ssh user@ip echo '$VARIABLE' } 

oder wenn Sie mehr Befehle haben, können Sie:

my_func () { ssh user@ip <<'EOF' echo $VARIABLE command2 command3 EOF } 

Sie können auch (mein Favorit für die Ausführung vieler Befehle) Ihre Befehle in eine andere Datei einfügen und folgendes tun:

my_func () { SOURCE_FILE='/path/to/file' cat "$SOURCE_FILE" | ssh user@ip } 
Ich denke, Sie müssen die Variable wie folgt entkommen: `" \ $ VARIABLE "` oder einfache Anführungszeichen wie '$ VARIABLE' verwenden. gogators vor 7 Jahren 2
@Jesse_b Leider funktioniert nichts davon. Ich schaffe es, mich mit der Gegenstelle zu verbinden, aber wenn ich ein Echo bekomme, passiert nichts. thanasissdr vor 7 Jahren 0
@ gogators Danke! Sie haben Recht, der lokale Computer hat versucht, die Variable zu erweitern, bevor er an den Remote-Computer gesendet wurde. Jesse_b vor 7 Jahren 0