Jak zdalnie znaleźć wersję maszyny Ubuntu?


20

Mam ponad 60 do 80 systemów z systemem Ubuntu. Niektóre z nich są w wersji 8.04, a niektóre z najnowszą wersją 10.10. Teraz jesteśmy w trakcie aktualizacji wszystkich starszych wersji Ubuntu do nowszej wersji. Trudno jest włączyć każdy system Ubuntu i robić notatki o starszej wersji Ubuntu, a następnie aktualizować. Mam adresy IP wszystkich tych maszyn w pliku tekstowym. Szukam więc prostego skryptu bash, który zautomatyzuje zadanie. Oczekuję, że dane wyjściowe wyglądałyby tak:

172.29.34.40 ubuntu 10.04
172.29.34.41 ubuntu 8.04
172.29.34.42 ubuntu 8.10

itd. Czy ktoś może mi pomóc?

Odpowiedzi:


31

Możesz pobrać wersję Ubuntu za pomocą

$ lsb_release -s -d
Ubuntu 10.04.1 LTS

Jeśli chcesz to zautomatyzować, napisz skrypt Bash, który odczytuje listę hostów ze standardowego wejścia i wykonuje polecenie przez SSH. Coś jak

#!/bin/bash
while read host; do
   echo -n "$host: "
   ssh "$host" lsb_release -s -d < /dev/null
done

Jeśli masz jedno wspólne konto użytkownika na wszystkich komputerach, z którymi chcesz się połączyć, to powinno być to, czego szukasz

#!/bin/bash
RUSER="username"
while read host; do
   echo -n "$host: "
   ssh "$RUSER@$host" lsb_release -s -d < /dev/null
done

Zapisz go jako version.sh, pamiętając, aby był wykonywalny ( chmod a+x versions.sh) i wykonać

$ versions.sh < ips.txt

Chcę dane wyjściowe dla wszystkich 80 systemów z systemem Ubuntu, wykonując jedno polecenie lub prosty skrypt. Wiem, że mogę znaleźć wersję ubuntu na jednym komputerze.
karthick87

Już aktualizowałem swoją odpowiedź, kiedy opublikowałeś komentarz. Mam nadzieję, że to pomaga.
Adam Byrtek

btw, $ ip może zawierać user@hostinformacje.
antivirtel

Tak, może być czymkolwiek akceptowanym przez ssh, o ile jest oddzielony spacją.
Adam Byrtek

Czy chcesz, żebym to zrobił jako skrypt bash? A $ IP powinno zawierać adresy IP wszystkich maszyn, prawda?
karthick87

3

Zakładając, że działają na serwerach SSH, możesz spróbować zgadnąć wersje Ubuntu na podstawie wersji pakietowej SSH:

$ nc IP.IP.IP.IP 22
SSH-2.0-OpenSSH_5.5p1 Debian-4ubuntu5
Ctrl-C

Obecne wersje openssh są wymienione w Launchpad https://launchpad.net/distros/ubuntu/+source/openssh :

openssh | 1:4.2p1-7ubuntu3.5 | dapper-updates/main
openssh | 1:4.7p1-8ubuntu3   | hardy-updates/main
openssh | 1:5.1p1-6ubuntu2   | karmic/main
openssh | 1:5.3p1-3ubuntu6   | lucid-updates/main
openssh | 1:5.5p1-4ubuntu5   | maverick-updates/main
openssh | 1:5.8p1-1ubuntu2   | natty/main

Tak więc w moim powyższym przykładzie 5.5p1z wersją Debiana -4ubuntu5wygląda na system Ubuntu 10.10 Maverick.

Niektóre serwery mogą mieć w swoim /etc/ssh/sshd_configpliku „DebianBanner no” , ale nadal wyświetlana jest wersja OpenSSH, która jest wystarczająca do identyfikacji systemu (do tej pory każda wersja Ubuntu ma inną wersję OpenSSH).


Podoba mi się to - jest to potencjalnie najmniej pracochłonne rozwiązanie. Nie wymaga niczego konfigurowania na 80 hostach.
DrSAR,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.