Pertanyaan Bagaimana cara menemukan versi mesin Ubuntu secara remote?


Saya memiliki lebih dari 60 hingga 80 sistem yang menjalankan Ubuntu. Beberapa di antaranya dengan versi 8.04 dan beberapa di antaranya dengan versi terbaru 10.10. Sekarang kami sedang dalam proses memperbarui semua versi Ubuntu yang lebih lama ke versi yang lebih baru. Sulit untuk mengaktifkan setiap sistem Ubuntu dan mencatat versi Ubuntu yang lebih tua dan kemudian melakukan upgrade. Saya memiliki alamat IP dari semua mesin ini dalam sebuah 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?


20
2018-03-31 14:55


asal




Jawaban:


Anda bisa menggunakan versi Ubuntu

$ lsb_release -s -d
Ubuntu 10.04.1 LTS

Jika Anda ingin mengotomatisasi itu, 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 hubungkan maka ini harus menjadi apa 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 version.sh, mengingat untuk membuatnya bisa dieksekusi (chmod a+x versions.sh), dan eksekusi

$ versions.sh < ips.txt

31
2018-03-31 14:57



Saya ingin output untuk semua sistem 80 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 membantu. - Adam Byrtek
btw, $ ip mungkin mengandung user@host informasi. - antivirtel
Ya, itu bisa apa saja diterima oleh ssh, asalkan ruang itu terpisah. - Adam Byrtek
Apakah Anda ingin saya menjadikannya sebagai bash script? Dan $ IP harus berisi alamat ip dari semua mesin yang benar? - karthick87


Dengan asumsi mereka menjalankan server SSH, Anda dapat 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 terbaru dari openssh terdaftar 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.5p1 dengan versi Debian dari -4ubuntu5 terlihat menjadi sistem Ubuntu 10.10 Maverick.

Beberapa server mungkin memiliki "DebianBanner no" di dalamnya /etc/ssh/sshd_config file, tetapi versi upstream OpenSSH masih terlihat yang cukup untuk mengidentifikasi sistem masih (setiap rilis Ubuntu sejauh ini memiliki versi upstream yang berbeda dari OpenSSH).


3
2018-03-31 23:31



Saya suka ini - ini berpotensi solusi paling boros tenaga kerja. Ini tidak mengharuskan Anda untuk mengatur apa pun pada 80 host. - DrSAR