
Das Einrichten einer .ssh/config-Datei spart viel Zeit. Die Host-Aliase mit benutzerdefinierten Namen erleichtern die Übersicht über Server und Schlüsseldateien. Die Registerkartennamen im OSX-Terminal zeigen jedoch den Hostnamen an, den der Server angibt, und nicht den Host-Alias aus der .ssh/config-Datei.
Für diesen Eintrag:
Host CustName01
HostName ec2-20-12-130-143.compute-1.amazonaws.com
IdentityFile ~/.ssh/remote.pem
User root
Der Name der Registerkarte im OSX-Terminal zeigt Folgendes:
root@domU-11-21-35-24-33-9A:~
Ich habe versucht, das Problem zu lösen, indem ich vor dem Verbinden den Tab-Namen festgelegt habe:
Host *
PermitLocalCommand yes
Host CustName01
LocalCommand printf "\e]1;CustName01\a"
HostName ec2-20-12-130-143.compute-1.amazonaws.com
IdentityFile ~/.ssh/remote.pem
User root
Es legt den Registerkartennamen vor dem Verbinden fest, zeigt dann aber nach dem Verbinden erneut Folgendes an:
root@domU-11-21-35-24-33-9A:~
Wie kann ich erreichen, dass meine Registerkarte automatisch den Alias CustName01 anzeigt, den ich in der SSH-Konfigurationsdatei angegeben habe? Das manuelle Festlegen des Werts im Dialogfeld „Registerkarte prüfen“ ist nicht das, wonach ich strebe.
Das Ausführen des Befehls zum Festlegen des Registerkartennamens während einer Verbindung mit einem Remoteserver bewirkt nichts:
printf "\e]1;CustName01\a"
Antwort1
Eine Art Hack, aber es funktioniert irgendwie. Ich sage „funktioniert irgendwie“, weil es im Tab-Inspektor zwei Stellen gibt, an denen man den Titel des Tabs festlegen kann. Ich konnte die gewünschte Eingabe mit „Tab-Titel“ nicht mit Applescript festlegen, aber ich konnte die mit „Fenstertitel“ festlegen. Diese Lösung hilft mir jedoch herauszufinden, mit welcher Maschine ich verbunden bin.
settabname.sh
#!/bin/bash
osascript -e 'delay 2' -e "tell application \"Terminal\" to tell window 1 to set custom title to \"$1\""
~/.ssh/config
Host *
PermitLocalCommand yes
Host CustName01
LocalCommand ~/.ssh/settabname.sh CustName01 &
HostName ec2-20-12-130-143.compute-1.amazonaws.com
IdentityFile ~/.ssh/remote.pem
User root
Der Trick dabei ist, dass & die Bash mit dem eingebetteten Applescript asynchron ausführt. Das Applescript hat eine Verzögerung, die es ihm ermöglicht, die Registerkarte umzubenennen, nachdem Ihre Remoteverbindung eine Umbenennung durchgeführt hat.
So können Sie den Registerkartennamen bereinigen, nachdem der SSH-Befehl beendet wurde. https://unix.stackexchange.com/questions/40899/ssh-localcommand-on-exit
~/.bashrc
## run a cleanup command after ssh exit
ssh() {
if command ssh "$@"; then
# commands go here
~/.ssh/settabname.sh Local &
fi
}