當前位置: 首頁>>技術教程>>正文


bash – 如何遠程查找 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 腳本,該腳本從標準輸入讀取主機列表並通過 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

所以在我上麵的例子中,帶有 -4ubuntu5 的 Debian 版本的 5.5p1 看起來是一個 Ubuntu 10.10 Maverick 係統。

有些服務器的 /etc/ssh/sshd_config 文件中可能有 “DebianBanner no”,但 OpenSSH 的上遊版本仍然可見,這足以識別係統(到目前為止,每個 Ubuntu 版本都有不同的 OpenSSH 上遊版本)。

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/12489.html,未經允許,請勿轉載。