【发布时间】:2015-04-02 03:11:35
【问题描述】:
我想用 ssh 获取所有服务器的时间,但我的脚本只循环一次然后退出,这是什么原因?
servers.txt
192.168.1.123
192.168.1.124
192.168.1.125
192.168.1.126
gettime.sh
#!/bin/bash
while read host
do
ssh root@${host} date
done < "servers.txt"
输出
Tue Feb 3 09:56:54 CST 2015
【问题讨论】:
-
顺便说一句,我会考虑并行而不是串行执行此操作 - 否则,您将获得不同的结果,因为您开始对各种服务器运行命令之间的时间间隔。例如:
while read host; do (remotedate=$(ssh -n "$host" date); echo "$host: $remotedate") & done将尽可能快地启动新的 ssh 会话,因为它可以从文件中读取名称,并为每行读取分叉子 shell,而不是在读取下一行之前等待每个返回。