Gibt es ein Dienstprogramm zum Anpingen eines Servers mithilfe von Aliasnamen in der SSH-Konfiguration (anstelle von /etc/hosts)?

Gibt es ein Dienstprogramm zum Anpingen eines Servers mithilfe von Aliasnamen in der SSH-Konfiguration (anstelle von /etc/hosts)?

Ich versuche, meine Server-Aliase projektübergreifend zu standardisieren, indem ich SSH-Konfigurationsdateien miteinander verknüpfe, die ich unter Versionskontrolle halten kann.

Ich möchte in der Lage sein, Maschinenaliase zusammen mit IP-Adressen und SSH-Schlüsseln an einem Ort (den SSH-Konfigurationen) zu definieren. Dies funktioniert gut mit SSH-basierten Dienstprogrammen wie /bin/sshund (glaube ich) scp. Sie erhalten sogar eine Tab-Vervollständigung.

Wenn ich die Aliase jedoch in meiner SSH-Konfiguration einstelle, sind sie für Ping und andere Standard-Netzwerkdienstprogramme nicht verfügbar. Ich möchte meine /etc/hosts nicht mit meinen SSH-Konfigurationsdateien synchron halten müssen.

Gibt es eine Möglichkeit, entweder

  1. SSH-Aliase automatisch so einrichten, als wären sie in /etc/hosts? oder
  2. eine Suite von Netzwerkdienstprogrammen finden, die die aktive SSH-Konfiguration als Quelle für Aliase verwenden?

Antwort1

Ich habe eine kleine Shell-Funktion geschrieben, die genau das tut und beispielsweise in Ihrem platziert werden kann .bashrc.

Es ersetzt pingund sucht nach dem letzten Argument (Host) in , .ssh/configbevor das Original aufgerufen wird /bin/ping, d. h. es ping -c 2 <host>wird aufgerufen /bin/ping -c2 <hostname>, wo <hostname>sich die passende IP/der passende Hostname in befindet .ssh/config. Wenn in der Datei kein Host gefunden wird, der dem letzten Argument entspricht, wird wie beim Standard der ursprüngliche Wert verwendet ping.

ping()
{
    # Process args
    local i=0
    local options=""
    local host=""
    for arg
    do
        i=$(($i+1))
        if [ "$i" -lt "$#" ]
        then
            options="${options} ${arg}"
        else
            host="${arg}"
        fi
    done

    # Find host
    local hostname=$(awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"${host}\" {print \$2}" "$HOME/.ssh/config")
    if [ -z "$hostname" ]
    then
        hostname="$host"
    fi

    # Run ping
    /bin/ping $options $hostname
}

Antwort2

pip3 installieren sshping

dann sshping Hostname

verwandte Informationen