Bagaimana menemukan versi mesin Ubuntu dari jarak jauh?

20

Saya memiliki lebih dari 60 hingga 80 sistem yang menjalankan Ubuntu. Beberapa dari mereka dengan versi 8.04 dan beberapa dari mereka dengan versi terbaru 10.10. Sekarang kami sedang dalam proses memutakhirkan semua versi Ubuntu yang lebih lama ke versi yang lebih baru. Sulit untuk mengaktifkan setiap sistem Ubuntu dan mencatat versi Ubuntu yang lebih lama dan kemudian memutakhirkan. Saya memiliki alamat IP dari semua mesin ini dalam file teks. Jadi saya mencari skrip bash sederhana yang akan mengotomatiskan tugas. Saya mengharapkan output akan terlihat seperti ini:

172.29.34.40 ubuntu 10.04
172.29.34.41 ubuntu 8.04
172.29.34.42 ubuntu 8.10

dan seterusnya .. Adakah yang bisa membantu saya?

karthick87
sumber

Jawaban:

31

Anda bisa menggunakan versi Ubuntu

$ lsb_release -s -d
Ubuntu 10.04.1 LTS

Jika Anda ingin mengotomatiskannya, tulis skrip Bash yang membaca daftar host dari stdin dan jalankan perintah melalui SSH. Sesuatu seperti

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

Jika Anda memiliki satu akun pengguna umum di semua mesin yang ingin Anda sambungkan, inilah yang Anda cari

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

Simpan sebagai versi.sh, ingat untuk membuatnya dapat dieksekusi ( chmod a+x versions.sh), dan jalankan

$ versions.sh < ips.txt
Adam Byrtek
sumber
Saya ingin output untuk semua 80 sistem yang menjalankan ubuntu dengan mengeksekusi perintah tunggal atau dengan skrip sederhana. Saya tahu untuk menemukan versi ubuntu dalam satu mesin.
karthick87
Saya sudah memperbarui jawaban saya ketika Anda memposting komentar. Semoga itu bisa membantu.
Adam Byrtek
btw, $ ip mungkin mengandung user@hostinformasi.
antivirtel
Ya, itu bisa apa saja yang diterima oleh ssh, asalkan terpisah ruang.
Adam Byrtek
Apakah Anda ingin saya menjadikannya sebagai skrip bash? Dan $ IP harus berisi alamat ip semua mesin, bukan?
karthick87
3

Dengan asumsi mereka menjalankan server SSH, Anda bisa mencoba menebak versi Ubuntu berdasarkan versi paket SSH:

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

Versi openssh saat ini tercantum di 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

Jadi dalam contoh saya di atas, 5.5p1dengan versi Debian -4ubuntu5terlihat menjadi sistem Ubuntu 10.10 Maverick.

Beberapa server mungkin memiliki "DebianBanner no" di /etc/ssh/sshd_configfile mereka , tetapi versi hulu OpenSSH masih terlihat yang cukup untuk mengidentifikasi sistem masih (setiap rilis Ubuntu sejauh ini memiliki versi hulu OpenSSH yang berbeda).

Kees Cook
sumber
Saya suka ini - ini berpotensi merupakan solusi padat karya paling sedikit. Anda tidak perlu mengatur apa pun di 80 host.
DrSAR