Löst einen Echo-Befehl nach ssh in iterm2 aus

1101
Elad Kuzy

Ich versuche folgenden Befehl nach "ssh somehost" auszulösen: export PROMPT_COMMAND='echo -ne "\033]0;$HOSTNAME\007"'

Nichts scheint zu funktionieren, irgendwelche Vorschläge?

1
Nichts scheint zu funktionieren? Was hast du bisher versucht? scai vor 8 Jahren 0
Nun, ich habe diesen Auslöser im Profil: http://imgur.com/2Zu74my Wenn ich im Shell-Echo-Test laufe, löst der Befehl nicht aus. Elad Kuzy vor 8 Jahren 0
Wenn Sie sich auf einem Unix-System befinden, können Sie `ssh root @ MachineB 'bash -s' <local_script.sh` ausführen, um den Inhalt von` local_script.sh` auszuführen, nachdem Sie sich mit `MachineB` verbunden haben. pzkpfw vor 8 Jahren 0

1 Antwort auf die Frage

0
MariusMatutiae

Ich glaube nicht, dass das möglich ist.

Zuerst musste ich Ihren Befehl neu schreiben. Obwohl dies durch die Tatsache (siehe später) nichtig ist, dass das, was Sie erreichen möchten, nicht erreicht werden kann, ist die Methode dafür von Interesse und Allgemeinheit, daher werde ich darüber sprechen. Ich musste Ihren Befehl in ändern

 ssh me@remote 'COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\""); export PROMPT_COMMAND=$' 

Der Grund ist, dass es notwendig ist, zu verhindern, dass die lokale Shell durch $HOSTANMEihren localWert ersetzt wird. Daher muss das, was wir an den Remote-Server übergeben, in einfache Anführungszeichen gesetzt werden '. Damit dies funktioniert, darf es keine einfachen Anführungszeichen innerhalb des Befehls geben. Daher musste ich ihn so umschreiben, dass im Befehl keine einfachen Anführungszeichen angezeigt werden, die remote ausgeführt werden können. Ich schaffte dies mit einem Array zu tun COLOR. Der Befehl

COLOR=("echo" "-ne" "\"\\033[48;5;95;38;5;214m\$HOSTNAME\033[0m\"") export PROMPT_COMMAND=$ 

funktioniert gut vor Ort (die Wahl der Farben ist meine).

Es gibt zwei Möglichkeiten, Umgebungsvariablen über ssh zu exportieren. Erstens kann man die Variable AcceptEnvin der Serverdatei ändern, /etc/ssh/sshd_configaber der manuelle Status

AcceptEnv

Gibt an, welche Umgebungsvariablen durch den Client gesendet in die Sitzung kopiert werden environ .

Der Schwerpunkt liegt hier auf der Sitzung : keine globale Veränderung.

Der zweite Weg ist durch die PermitUserEnvironmentVariable:

PermitUserEnvironment

Specifies whether ~/.ssh/environment and environment= options in ~/.ssh/authorized_keys are processed by sshd. The default is "no". Enabling environment processing may enable users to bypass access restrictions in some configurations using mechanisms such as LD_PRELOAD. 

Wie Sie sehen, sshist es sehr vorsichtig, wenn Sie einem entfernten Benutzer nicht erlauben, globale Umgebungsvariablen zu ändern.

Danke für die sehr informative und tiefe Antwort, ich versuche jedoch nur ein paar Sachen zu wiederholen. Sogar etwas sehr grundlegendes funktioniert nicht. Zum Beispiel: trigger-test action-Run Command ... Das Parameter-echo hi funktioniert nicht. Elad Kuzy vor 8 Jahren 0
@EladKuzy Könnten Sie mir ein detailliertes Beispiel eines Befehls geben, der nicht funktioniert? Ich meine, genau den Befehl, den Sie versucht haben. MariusMatutiae vor 8 Jahren 0
Überprüfen Sie den letzten Auslöser, den ich http://imgur.com/lkCPmkX hinzugefügt habe. Ich teste es dann in bash durch Eingabe von echo "hi". Andere Auslöser funktionieren, nur der Aktionstyp "Befehl ausführen ..." bereitet mir Probleme. Elad Kuzy vor 8 Jahren 0