20 votes

Comment trouver la version d'une machine Ubuntu à distance ?

J'ai plus de 60 à 80 systèmes fonctionnant sous Ubuntu. Certains d'entre eux sont en version 8.04 et d'autres en dernière version 10.10. Nous sommes en train de mettre à jour toutes les anciennes versions d'Ubuntu vers une version plus récente. Il est difficile d'allumer chaque système Ubuntu et de prendre des notes sur les anciennes versions d'Ubuntu, puis de les mettre à niveau. J'ai les adresses IP de toutes ces machines dans un fichier texte. Je suis donc à la recherche d'un simple bash script qui automatisera la tâche. Je m'attends à ce que la sortie ressemble à ceci :

172.29.34.40 ubuntu 10.04
172.29.34.41 ubuntu 8.04
172.29.34.42 ubuntu 8.10

et ainsi de suite Quelqu'un peut-il m'aider ?

30voto

Adam Byrtek Points 9538

Vous pouvez obtenir la version Ubuntu en utilisant

$ lsb_release -s -d
Ubuntu 10.04.1 LTS

Si vous voulez automatiser cela, écrivez un Bash script qui lit la liste des hôtes à partir de stdin et exécute la commande sur SSH. Quelque chose comme

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

Si vous disposez d'un compte utilisateur commun sur toutes les machines auxquelles vous souhaitez vous connecter, cela devrait correspondre à ce que vous recherchez.

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

Enregistrez-le sous le nom de versions.sh, en n'oubliant pas de le rendre exécutable ( chmod a+x versions.sh ), et exécute

$ versions.sh < ips.txt

0 votes

Je veux la sortie pour tous les 80 systèmes exécutant ubuntu en exécutant une seule commande ou par simple script.Je sais trouver la version ubuntu dans une seule machine.

0 votes

J'étais déjà en train de mettre à jour ma réponse lorsque vous avez posté le commentaire. J'espère que cela vous aidera.

0 votes

Btw, $ip peut contenir user@host informations.

3voto

Brian Childress Points 437

En supposant qu'ils utilisent des serveurs SSH, vous pouvez essayer de deviner les versions d'Ubuntu en vous basant sur la version du paquet de SSH :

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

Les versions actuelles d'openssh sont listées dans 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

Donc, dans mon exemple ci-dessus, 5.5p1 avec une version Debian de -4ubuntu5 semble être un système Ubuntu 10.10 Maverick.

Certains serveurs peuvent avoir "DebianBanner no" dans leur liste d'adresses. /etc/ssh/sshd_config mais la version amont d'OpenSSH est toujours visible, ce qui est suffisant pour identifier le système (chaque version d'Ubuntu jusqu'à présent a une version amont différente d'OpenSSH).

0 votes

J'aime ça - c'est potentiellement la solution qui demande le moins de travail. Elle ne nécessite aucune installation sur les hôtes 80.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X