Wie kann ich feststellen, auf welchem Server Sie sich befinden, wenn Sie ssh vom Terminal aus verwenden?
Ich muss täglich auf 30 Server ssh und ständig zwischen ihnen wechseln.
Derzeit bearbeite ich den Tab-Namen und schreibe die IP-Adresse, um von einem zum anderen zu springen.
Gibt es eine automatisierte Möglichkeit, dies zu tun (Zuweisen der Server-IP-Adresse als Registerkartenname)? Gibt es andere Alternativen, bei denen keine Datei auf jedem Server bearbeitet werden muss?
command-line
ssh
RASG
quelle
quelle
user@hostname
auf dem ersten Host, den ich verbinde. Ich möchte die IP-Adresse sehen. Auch wenn ich vonserver1
zu springeserver2
, ändert die Registerkarte keine Namen.Antworten:
Normalerweise verwende ich den Hostnamen, der über eingestellt ist
$PS1
. Wenn Sie sich jedoch die Mühe machen, können Sie GNU verwendenscreen
und dann eine Funktion wie die folgende definieren:Erläuterung:
screen
Die Remote-Shell lässt dies nicht direkt zu, und Sie müssen sie anpassen, um dies zu ermöglichen. Dies erleichtert es Ihnen, einen Titel lokal festzulegen und sich daran zu halten.echo
String. Möglicherweise müssen Sie es auch tun.screen
abschließend eine Sitzung mit demssh
Befehl. Die Sitzung endet, wenn der Befehl beendet wird.Sie können dies auf verschiedene Arten anpassen. Sie können beispielsweise die Hostnamen und IP-Adressen in einer Datei speichern und daraus lesen (ähnlich wie die
ssh_config
) (und möglicherweise andere Dinge für den Titel speichern, z. B. Benutzernamen).Verwenden Sie jetzt
ssh-title some.host
zum Verbinden. Ich denke, dies ist die einzige Möglichkeit, dies zu tun, ohne irgendetwas auf der Serverseite zu bearbeiten.quelle
Einige Möglichkeiten, einen Server zu identifizieren:
PS1
) und Terminaltitel - unsicher (jeder kann sie duplizieren), aber einfach und praktisch.ip address
- Sicher mit einem SSH-Fingerabdruck und leichter lesbar.hostname
- unsicher aber sehr gut lesbar.quelle
Eine andere Option ist die Verwendung von liquidprompt --- funktioniert für beide
bash
undzsh
und kann einfach so konfiguriert werden, dass der Terminaltitel festgelegt wird und der Hostname in der Eingabeaufforderung sogar in verschiedenen Farben eingefärbt wird:quelle
Diese Lösung ist ein wenig hackisch, aber ich denke, sie wird das tun, wonach Sie suchen. Sie benötigen
xdotool
undwmctrl
installiert, damit dies funktioniert.Zuerst müssen Sie Ihre
~/.bashrc
Datei bearbeiten , da das Terminal standardmäßig nach jeder Zeile seinen Titel zurücksetzt, wodurch Befehlszeilentitelsätze unbrauchbar werden.Gleich nach:
xterm*|rxvt*)
Ersetzen:
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Mit:
PS1="${debian_chroot:+($debian_chroot)}\u@\h \w\a$ "
Als nächstes erstellen wir ein benutzerdefiniertes
ssh
Skript mit dem Namen "Was auch immer Sie wollen", aber für diese Antwort rufe ich meins auftab-ssh
. Öffnen Sie einen Texteditor und speichern Sie Folgendes alstab-ssh
:Dann machen Sie es ausführbar:
chmod +x tab-ssh
Angenommen, Sie verwenden
bash
undgnome-terminal
, sollte das Skript eine neue Registerkarte öffnen, umbenennen und diessh
Sitzung starten . Zum Beispiel:tab-ssh [email protected]
öffnet eine neue Registerkarte, benennt sie um
0.0.0.0
(dh alles, was auf das "@" - Zeichen folgt) und führt sie dann aus[email protected]
.Erstellt mit den folgenden:
quelle