Como encontrar a versão de uma máquina Ubuntu remotamente?


20

Eu tenho mais de 60 a 80 sistemas executando o Ubuntu. Alguns deles estão na versão 8.04 e outros na versão 10.10. Agora, estamos no processo de atualizar todas as versões mais antigas do Ubuntu para uma versão mais recente. É difícil ativar todos os sistemas Ubuntu e tomar notas da versão mais antiga do Ubuntu e depois atualizar. Eu tenho endereços IP de todas essas máquinas em um arquivo de texto. Então, eu estou procurando um script bash simples que automatize a tarefa. Espero que a saída fique assim:

172.29.34.40 ubuntu 10.04
172.29.34.41 ubuntu 8.04
172.29.34.42 ubuntu 8.10

e assim por diante .. Alguém pode me ajudar?

Respostas:


31

Você pode obter a versão do Ubuntu usando

$ lsb_release -s -d
Ubuntu 10.04.1 LTS

Se você deseja automatizar isso, escreva um script Bash que leia a lista de hosts do stdin e execute o comando no SSH. Algo como

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

Se você tiver uma conta de usuário comum em todas as máquinas às quais deseja se conectar, deve ser isso que você está procurando

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

Salve-o como version.sh, lembrando de torná-lo executável ( chmod a+x versions.sh) e execute

$ versions.sh < ips.txt

Eu quero a saída para todos os 80 sistemas que executam o ubuntu executando um comando único ou por um script simples. Eu sei encontrar a versão do ubuntu em uma única máquina.
karthick87

Eu já estava atualizando minha resposta quando você postou o comentário. Espero que ajude.
Adam Byrtek 31/03

btw, $ ip pode conter user@hostinformações.
antivirtel 31/03

Sim, pode ser qualquer coisa aceita pelo ssh, desde que seja espaço separado.
Adam Byrtek 31/03

Você quer que eu faça isso como script bash? E $ IP deve conter endereços IP de todas as máquinas, certo?
Kartick87

3

Supondo que eles estejam executando servidores SSH, você pode tentar adivinhar as versões do Ubuntu com base na versão do pacote do SSH:

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

As versões atuais do openssh estão listadas no 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

Então, no meu exemplo acima, 5.5p1com uma versão Debian do -4ubuntu5parece ser um sistema Ubuntu 10.10 Maverick.

Alguns servidores podem ter "DebianBanner no" em seu /etc/ssh/sshd_configarquivo, mas a versão upstream do OpenSSH ainda é visível, o que é suficiente para identificar o sistema ainda (cada versão do Ubuntu até agora tem uma versão upstream diferente do OpenSSH).


Eu gosto disso - essa é potencialmente a solução menos trabalhosa. Não requer que você configure nada nos 80 hosts.
DrSAR
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.