Jak zidentyfikować serwer, na którym jesteś, gdy używasz ssh z terminala?
Muszę ssh do 30 serwerów dziennie i ciągle się między nimi przełączać.
Obecnie edytuję nazwę karty i piszę adres IP, aby przeskakiwać z jednej na drugą.
Czy istnieje zautomatyzowany sposób (przypisanie adresu IP serwera jako nazwy karty)? Jakieś alternatywy, które nie będą wymagały edycji pliku na każdym serwerze?
command-line
ssh
RASG
źródło
źródło
user@hostname
na pierwszym hoście, który łączę. Chciałbym zobaczyć adres IP. Ponadto, jeśli przejdęserver1
doserver2
, karta nie zmienia nazw.Odpowiedzi:
Zwykle używam nazwy hosta ustawionej za pomocą
$PS1
. Jeśli jednak zaryzykujesz, możesz zacząć używać GNU,screen
a następnie możesz zdefiniować taką funkcję:Wyjaśnienie:
screen
nie pozwala na to bezpośrednio zdalnej powłoce i musisz ją dostosować, aby to zrobić, ułatwiając lokalne ustawienie tytułu i trzymanie się go.echo
ciąg. Być może będziesz musiał to zrobić.screen
aby rozpocząć sesję zssh
poleceniem. Sesja kończy się po wyjściu polecenia.Możesz to dostosować na różne sposoby. Na przykład możesz zapisać nazwy hostów i adresy IP w pliku i odczytać z niego (trochę jak
ssh_config
) (i może zapisać inne rzeczy dla tytułu, takie jak nazwy użytkownika).Teraz użyj
ssh-title some.host
do połączenia. Myślę, że to jedyny sposób, aby to zrobić bez edytowania czegokolwiek po stronie serwera.źródło
Kilka sposobów identyfikacji serwera:
PS1
) i tytuł terminala - niepewne (każdy może go zduplikować), ale proste i praktyczne.ip address
- zabezpieczony za pomocą odcisku palca SSH i łatwiejszy do odczytania.hostname
- niepewny, ale bardzo czytelny.źródło
Inną opcją jest użycie płynnego monitu --- działa w obu przypadkach
bash
izsh
może być łatwo skonfigurowane tak, aby ustawić tytuł terminalu, a nawet pokolorować w różnych kolorach nazwę hosta w monicie:źródło
To rozwiązanie jest trochę hackerskie, ale myślę, że zrobi to, czego szukasz. Będziesz potrzebował
xdotool
iwmctrl
zainstalowany, aby to działało.Najpierw musisz edytować
~/.bashrc
plik, ponieważ domyślnie terminal resetuje swój tytuł po każdej linii, czyniąc zestawy wierszy poleceń bezużytecznymi.Zaraz po:
xterm*|rxvt*)
Zastąpić:
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Z:
PS1="${debian_chroot:+($debian_chroot)}\u@\h \w\a$ "
Następnie stworzymy niestandardowy
ssh
skrypt o nazwie cokolwiek zechcesz, ale dla tej odpowiedzi zadzwonię do mojegotab-ssh
. Otwórz edytor tekstu i zapisz następujące dane jakotab-ssh
:Następnie uczyń go wykonywalnym:
chmod +x tab-ssh
Teraz, zakładając, że używasz
bash
ignome-terminal
uruchomienie skryptu powinno otworzyć nową kartę, zmienić jej nazwę i rozpocząćssh
sesję. Na przykład:tab-ssh [email protected]
otworzy nową kartę, zmieni nazwę na
0.0.0.0
(tj. wszystko po znaku „@”), a następnie uruchom[email protected]
.Utworzono przy użyciu:
źródło