正常运行时间脚本帮助

正常运行时间脚本帮助

我正在寻找构建一个脚本,该脚本将使用主机文件登录到多个服务器并运行正常运行时间、主机名 -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"

这将循环遍历hosts_file的每一行,将整行分配给host.然后它将hostnameip_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

相关内容