У меня более 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
Сохраните его как версии. sh, не забывая сделать его исполняемым (chmod a+x versions.sh
) и выполнить
$ versions.sh < ips.txt
Предполагая, что они работают на SSH-серверах, вы можете попытаться угадать версии Ubuntu на основе версии пакета SSH:
$ 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.5p1
с версией Debian -4ubuntu5
выглядит как система Ubuntu 10.10 Maverick.
Некоторые серверы могут иметь «DebianBanner no» в своем файле /etc/ssh/sshd_config
, но все еще видна исходная версия OpenSSH, что достаточно для идентификации системы по-прежнему (каждый выпуск Ubuntu до сих пор имеет различную исходную версию OpenSSH) .