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

如何远程查找 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

等等。有人能帮助我吗?

答案1

您可以使用以下方式获取 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

答案2

假设他们正在运行 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

因此在我上面的例子中,5.5p1Debian 版本看起来-4ubuntu5像是 Ubuntu 10.10 Maverick 系统。

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

相关内容