如何远程查找Ubuntu机器的版本?

我有超过60到80个运行Ubuntu的系统。 其中一些版本是8.04版本,其中一些版本是最新版本10.10。 现在我们正在将所有旧的Ubuntu版本升级到更新版本。 很难打开每个Ubuntu系统并记录较旧的Ubuntu版本然后进行升级。 我在文本文件中有所有这些机器的IP地址。 所以我正在寻找一个简单的bash脚本,它将自动完成任务。 我期待输出看起来像这样:

172.29.34.40 ubuntu 10.04
172.29.34.41 ubuntu 8.04
172.29.34.42 ubuntu 8.10

等等..任何人都可以帮助我吗?

您可以使用Ubuntu版本

$ lsb_release -s -d Ubuntu 10.04.1 LTS 

如果要自动执行该操作,请编写一个Bash脚本,该脚本从stdin读取主机列表并通过SSH执行命令。 就像是

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

如果您要连接的所有计算机上都有一个通用用户帐户,那么这应该是您要查找的内容

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

将其保存为versions.sh,记住要使其可执行( chmod a+x versions.sh ),然后执行

 $ versions.sh < ips.txt 

假设他们正在运行SSH服务器,您可以尝试根据SSH的软件包版本猜测Ubuntu版本:

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

当前版本的openssh列在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 

所以在上面的例子中,带有Debian版本-4ubuntu5看起来像是一个Ubuntu 10.10 Maverick系统。

某些服务器的/etc/ssh/sshd_config文件中可能有“DebianBanner no”,但OpenSSH的上游版本仍然可见,这足以识别系统(到目前为止,Ubuntu的每个版本都有不同的OpenSSH上游版本) 。