Wie kann ich die Namen der OSX-Terminal-Registerkarten mit den Host-Aliasnamen .ssh/config identisch machen?

Wie kann ich die Namen der OSX-Terminal-Registerkarten mit den Host-Aliasnamen .ssh/config identisch machen?

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
}

verwandte Informationen