Come trovare la versione di una macchina Ubuntu da remoto?


20

Ho più di 60 a 80 sistemi con Ubuntu. Alcuni di questi sono con la versione 8.04 e alcuni con l'ultima versione 10.10. Ora stiamo aggiornando tutte le versioni precedenti di Ubuntu a una versione più recente. È difficile accendere tutti i sistemi Ubuntu e prendere appunti della versione precedente di Ubuntu e quindi aggiornarli. Ho indirizzi IP di tutte queste macchine in un file di testo. Quindi sto cercando un semplice script bash che automatizzerà l'attività. Mi aspetto che l'output sia simile al seguente:

172.29.34.40 ubuntu 10.04
172.29.34.41 ubuntu 8.04
172.29.34.42 ubuntu 8.10

e così via .. Qualcuno può aiutarmi?

Risposte:


31

Puoi ottenere la versione di Ubuntu usando

$ lsb_release -s -d
Ubuntu 10.04.1 LTS

Se si desidera automatizzare ciò, scrivere uno script Bash che legge l'elenco di host da stdin ed esegue il comando su SSH. Qualcosa di simile a

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

Se hai un account utente comune su tutte le macchine a cui vuoi connetterti, questo dovrebbe essere quello che stai cercando

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

Salvalo come version.sh, ricordando di renderlo eseguibile ( chmod a+x versions.sh) ed eseguilo

$ versions.sh < ips.txt

Voglio l'output per tutti gli 80 sistemi che eseguono Ubuntu eseguendo il comando singolo o con un semplice script. So trovare la versione di Ubuntu in una singola macchina.
karthick87

Stavo già aggiornando la mia risposta quando hai pubblicato il commento. Spero possa aiutare.
Adam Byrtek,

tra l'altro, $ ip può contenere user@hostinformazioni.
antivirtel

Sì, può essere tutto accettato da ssh, purché sia ​​separato dallo spazio.
Adam Byrtek,

Vuoi che lo faccia come script bash? E $ IP dovrebbe contenere gli indirizzi IP di tutte le macchine, giusto?
karthick87

3

Supponendo che stiano eseguendo server SSH, potresti provare a indovinare le versioni di Ubuntu in base alla versione del pacchetto di SSH:

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

Le versioni correnti di openssh sono elencate in 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

Quindi nel mio esempio sopra, 5.5p1con una versione Debian di -4ubuntu5sembra essere un sistema Ubuntu 10.10 Maverick.

Alcuni server potrebbero avere "DebianBanner no" nel loro /etc/ssh/sshd_configfile, ma la versione upstream di OpenSSH è ancora visibile, il che è sufficiente per identificare il sistema (ogni versione di Ubuntu finora ha una versione upstream diversa di OpenSSH).


Mi piace questo - questa è potenzialmente la soluzione meno laboriosa. Non richiede di impostare nulla sugli 80 host.
DrSAR,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.