【发布时间】:2024-09-09 14:20:01
【问题描述】:
我使用crontab -e 来安排shell 脚本的执行,该脚本执行ssh 调用服务器列表并获取信息并打印到文件。 crontab -l 的输出为:
SHELL = /bin/sh
PATH = /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* 1 * * 1,2,3,4,5 /bin/bash /Users/cjones/Documents/Development/Scripts/DailyStatus.sh
我正在运行的脚本将echo "Beginning remote connections..." >> $logfile 的输出记录到文件中,但不会将以下循环的输出记录到文件中:
for servers in $(cat hostnames.txt); do
echo "Starting connection to $servers" >> $logfile
(rsync -av /Users/cjones/Documents/Development/Scripts/checkup.sh cjones@$servers:~/checkup.sh > /dev/null
echo""
ssh -t $servers "sudo ./checkup.sh") >> $logfile
echo ""
done
完整脚本的Pastebin:http://pastebin.com/3vD7Bba0
附加说明,此脚本将最新版本的管理脚本推送到远程服务器,然后通过 ssh 执行并捕获输出。当手动运行时,这项工作 100% 的时间。任何帮助都会有所帮助,谢谢!
【问题讨论】:
-
我将 crontab 更新为以下内容:
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin * * * * 1,2,3,4,5 /bin/bash /Users/cjones/Documents/Development/Scripts/DailyStatus.sh
标签: bash shell ssh cron crontab