원격으로 Ubuntu 컴퓨터 버전을 찾는 방법은 무엇입니까? 그들 중 일부는 8.04 버전이고 일부는 최신

우분투를 실행하는 60-80 개 이상의 시스템이 있습니다. 그들 중 일부는 8.04 버전이고 일부는 최신 버전 10.10입니다. 이제 모든 이전 Ubuntu 버전을 최신 버전으로 업그레이드하는 중입니다. 모든 Ubuntu 시스템을 켜고 이전 Ubuntu 버전을 기록한 다음 업그레이드하기는 어렵습니다. 이 모든 컴퓨터의 IP 주소는 텍스트 파일로되어 있습니다. 그래서 작업을 자동화 할 간단한 bash 스크립트를 찾고 있습니다. 출력은 다음과 같을 것으로 예상됩니다.

172.29.34.40 우분투 10.04
172.29.34.41 우분투 8.04
172.29.34.42 우분투 8.10

등등 .. 누구든지 나를 도울 수 있습니까?



답변

다음을 사용하여 우분투 버전을 얻을 수 있습니다

$ lsb_release -s -d
Ubuntu 10.04.1 LTS

이를 자동화하려면 stdin에서 호스트 목록을 읽고 SSH를 통해 명령을 실행하는 Bash 스크립트를 작성하십시오. 같은 것

#!/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

실행 파일 ( chmod a+x versions.sh) 로 만드는 것을 잊지 말고 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

위의 예에서 5.5p1데비안 버전의 -4ubuntu5룩은 우분투 10.10 매버릭 시스템입니다.

일부 서버에는 /etc/ssh/sshd_config파일 에 “DebianBanner no” 가있을 수 있지만 OpenSSH의 업스트림 버전은 여전히 ​​표시되어 시스템을 식별하기에 충분합니다 (지금까지 Ubuntu의 각 릴리스에는 다른 업스트림 버전의 OpenSSH가 있음).