Comment identifier le serveur sur lequel vous utilisez lorsque vous utilisez ssh à partir du terminal?
Je dois ssh dans 30 serveurs quotidiennement et basculer entre eux constamment.
Actuellement, je modifie le nom de l'onglet et j'écris l'adresse IP pour passer de l'un à l'autre.
Existe-t-il un moyen automatisé de procéder (en attribuant l'adresse IP du serveur comme nom d'onglet)? Y a-t-il d'autres alternatives qui n'impliqueront pas la modification d'un fichier sur chaque serveur?
command-line
ssh
RASG
la source
la source
user@hostname
sur le premier hôte que je connecte. je voudrais voir l'adresse ip. aussi, si je passe deserver1
àserver2
, l'onglet ne change pas de nom.Réponses:
J'utilise généralement le nom d'hôte, défini via
$PS1
. Cependant, si vous prenez la peine, vous pouvez commencer à utiliser GNUscreen
et ensuite vous pouvez définir une fonction comme ceci:Explication:
screen
ne laisse pas directement le shell distant faire cela, et vous devez le personnaliser pour le faire, ce qui vous permet de définir plus facilement un titre localement et de vous y tenir.echo
chaîne. Vous devrez peut-être le faire aussi.screen
pour démarrer une session avec lassh
commande. La session se termine lorsque la commande se termine.Vous pouvez personnaliser cela de différentes manières. Par exemple, vous pouvez enregistrer les noms d'hôte et les adresses IP dans un fichier et les lire (un peu comme le
ssh_config
) (et peut-être enregistrer d'autres choses pour le titre, comme les noms d'utilisateur).Maintenant, utilisez
ssh-title some.host
pour vous connecter. Je pense que c'est la seule façon de le faire sans modifier quoi que ce soit côté serveur.la source
Quelques façons d'identifier un serveur:
PS1
) et titre du terminal - non sécurisé (n'importe qui peut le dupliquer) mais simple et pratique.ip address
- sécurisé avec une empreinte SSH, et plus facilement lisible.hostname
- incertain mais très lisible.la source
Une autre option consiste à utiliser liquidprompt --- fonctionne pour les deux
bash
etzsh
, et peut être facilement configuré pour que le titre du terminal soit défini et même pour colorer de différentes couleurs le nom d'hôte dans l'invite:la source
Cette solution est un peu hackish, mais je pense qu'elle fera ce que vous cherchez. Vous aurez besoin
xdotool
etwmctrl
installé pour que cela fonctionne.Vous devez d'abord éditer votre
~/.bashrc
fichier car par défaut le terminal réinitialise son titre après chaque ligne, rendant le titre de la ligne de commande inutile.Juste après:
xterm*|rxvt*)
Remplacer:
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Avec:
PS1="${debian_chroot:+($debian_chroot)}\u@\h \w\a$ "
Ensuite, nous allons créer un
ssh
script personnalisé appelé ce que vous voulez, mais pour cette réponse, j'appellerai le mientab-ssh
. Ouvrez un éditeur de texte et enregistrez les éléments suivants soustab-ssh
:Rendez-le ensuite exécutable:
chmod +x tab-ssh
Maintenant, en supposant que vous utilisez
bash
etgnome-terminal
, l'exécution du script devrait ouvrir un nouvel onglet, le renommer et démarrer lassh
session. Par exemple:tab-ssh [email protected]
ouvrira un nouvel onglet, le renommera (c'est-à
0.0.0.0
-dire tout ce qui suit le signe "@"), puis exécutera[email protected]
.Créé en utilisant ce qui suit:
la source