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