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.