가동시간 스크립트 도움말 [닫기]

가동시간 스크립트 도움말 [닫기]

호스트 파일을 사용하여 여러 서버에 로그인하고 가동 시간, 호스트 이름-I 및 호스트 이름을 실행하는 스크립트를 작성하려고 합니다.

지금까지의 스크립트

echo"" ; 
echo "hostname:" $(ssh $HOST hostname) ;
echo "IP:" $(ssh $HOST hostname -I) ;
echo "uptime" $(ssh $HOST uptime) ;
echo"" ;

내 목표를 달성하는 가장 좋은 방법은 무엇입니까?

답변1

터미널에서 모든 출력을 원한다고 가정해 보겠습니다.

#!/bin/bash

hosts_file=/path/to/file
username=youruser

while read -r host; do
    hostname=$(ssh "${username}@${host}" hostname)
    ip_addr=$(ssh "${username}@${host}" hostname -I)
    uptime=$(ssh "${username}@${host}" uptime)
    echo
    {
        echo "Hostname:?$hostname"
        echo "IP:?$ip_addr"
        echo "uptime:?$uptime"
    } | column -s\? -t
    echo
done <"$hosts_file"

이는 호스트_파일의 각 라인을 반복하여 전체 라인을 에 할당합니다 host. 그런 다음 hostname, , 및 를 원격 시스템의 해당 결과로 ip_addr설정 합니다. uptime그런 다음 이러한 결과를 열 형식으로 다시 표시합니다.

답변2

시도해 보세요(호스트에 hostlist올바른 인증이 설정되어 있다고 가정).

while read HOST
  do { read HN; read IP; read UP; printf "hostname: %s\nIP: %s\nuptime: %s\n" "$HN" "$IP" "$UP"; } <<< "$(ssh $HOST  "hostname; hostname -I; uptime")"
  done < hostlist

관련 정보