Làm thế nào để tìm phiên bản của một máy Ubuntu từ xa?


20

Tôi có hơn 60 đến 80 hệ thống chạy Ubuntu. Một số trong số đó là với phiên bản 8.04 và một số trong số đó là với phiên bản mới nhất 10.10. Bây giờ chúng tôi đang trong quá trình nâng cấp tất cả phiên bản Ubuntu cũ lên phiên bản mới hơn. Rất khó để chuyển đổi trên mọi hệ thống Ubuntu và ghi chú phiên bản Ubuntu cũ hơn và sau đó nâng cấp. Tôi có địa chỉ IP của tất cả các máy này trong một văn bản một tệp. Vì vậy, tôi đang tìm kiếm một tập lệnh bash đơn giản sẽ tự động hóa tác vụ. Tôi đang mong đợi đầu ra sẽ như thế này:

172.29.34.40 ubuntu 10.04
172.29.34.41 ubuntu 8.04
172.29.34.42 ubuntu 8.10

vân vân .. Có ai có thể giúp tôi không?

Câu trả lời:


31

Bạn có thể lấy phiên bản Ubuntu bằng cách sử dụng

$ lsb_release -s -d
Ubuntu 10.04.1 LTS

Nếu bạn muốn tự động hóa điều đó, hãy viết một tập lệnh Bash đọc danh sách các máy chủ từ stdin và thực thi lệnh trên SSH. Cái gì đó như

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

Nếu bạn có một tài khoản người dùng chung trên tất cả các máy bạn muốn kết nối thì đây sẽ là thứ bạn đang tìm kiếm

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

Lưu nó dưới dạng Phiên bản .sh, ghi nhớ để làm cho nó có thể thực thi được ( chmod a+x versions.sh) và thực thi

$ versions.sh < ips.txt

Tôi muốn đầu ra cho tất cả 80 hệ thống chạy ubfox bằng cách thực thi một lệnh hoặc bằng tập lệnh đơn giản. Tôi biết để tìm phiên bản ubfox trong một máy.
karthick87

Tôi đã cập nhật câu trả lời của tôi khi bạn đăng bình luận. Mong rằng sẽ giúp.
Adam Byrtek

btw, $ ip có thể chứa user@hostthông tin.
antivirtel

Vâng, nó có thể là bất cứ thứ gì được ssh chấp nhận, miễn là không gian được phân tách.
Adam Byrtek

Bạn có muốn tôi biến nó thành tập lệnh bash không? Và $ IP nên chứa địa chỉ IP của tất cả các máy phải không?
karthick87

3

Giả sử họ đang chạy các máy chủ SSH, bạn có thể thử đoán các phiên bản Ubuntu dựa trên phiên bản gói SSH:

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

Các phiên bản hiện tại của openssh được liệt kê trong Launchpad https://launchpad.net/distros/ubfox/+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

Vì vậy, trong ví dụ trên của tôi, 5.5p1với phiên bản Debian có -4ubuntu5vẻ là một hệ thống Maverick Ubuntu 10.10.

Một số máy chủ có thể có "DebianBanner no" trong /etc/ssh/sshd_configtệp của họ , nhưng phiên bản thượng nguồn của OpenSSH vẫn hiển thị đủ để xác định hệ thống vẫn còn (mỗi bản phát hành Ubuntu cho đến nay có phiên bản OpenSSH ngược dòng khác nhau).


Tôi thích điều này - đây có thể là giải pháp ít tốn công sức nhất. Nó không yêu cầu bạn phải thiết lập bất cứ thứ gì trên 80 máy chủ.
DrSAR
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.