¿Cómo encontrar la versión de una máquina de Ubuntu de forma remota?

Tengo más de 60 a 80 sistemas que ejecutan Ubuntu. Algunos de ellos son con la versión 8.04 y otros con la última versión 10.10. Ahora estamos en el proceso de actualizar todas las versiones anteriores de Ubuntu a una versión más nueva. Es difícil encender cada sistema Ubuntu y tomar notas de versiones anteriores de Ubuntu y luego actualizar. Tengo las direcciones IP de todas estas máquinas en un texto un archivo. Así que estoy buscando un simple script de bash que automatice la tarea. Estoy esperando que la salida se vea así:

172.29.34.40 ubuntu 10.04
172.29.34.41 ubuntu 8.04
172.29.34.42 ubuntu 8.10

y así sucesivamente .. ¿Puede alguien ayudarme?

Puede obtener la versión de Ubuntu usando

$ lsb_release -s -d Ubuntu 10.04.1 LTS 

Si desea automatizar eso, escriba un script Bash que lea la lista de hosts desde la entrada estándar y ejecute el comando sobre SSH. Algo como

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

Si tiene una cuenta de usuario común en todas las máquinas a las que desea conectarse, entonces esto debería ser lo que está buscando

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

Guárdelo como versiones.sh, recuerde hacerlo ejecutable ( chmod a+x versions.sh ), y ejecute

 $ versions.sh < ips.txt 

Suponiendo que estén ejecutando servidores SSH, podría intentar adivinar las versiones de Ubuntu basadas en la versión del paquete de SSH:

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

Las versiones actuales de openssh se enumeran en 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 

Así que en mi ejemplo anterior, 5.5p1 con una versión Debian de -4ubuntu5 parece ser un sistema Maverick de Ubuntu 10.10.

Algunos servidores pueden tener “DebianBanner no” en su /etc/ssh/sshd_config , pero la versión ascendente de OpenSSH sigue siendo visible, lo cual es suficiente para identificar el sistema (cada versión de Ubuntu tiene una versión diferente de OpenSSH) .