我有一台服务器,需要每天向远程机器发送一些文件。
我已经完成了这个脚本以便自动执行这个任务。
我需要在这个脚本中插入什么才能查看这个任务是否已成功完成?
这两个任务,第一个任务是发送文件,另一个任务是强制该机器重新启动。
#!/bin/sh
for server in `more server-list.txt`
do
sshpass -p password scp -r /root/list/*.* root@$server:/etc/list/
done
sleep 5
for server in `more server-list.txt`
do
sshpass -p password ssh root@$server /sbin/reboot
done
#server-list.txt
10.29.0.32 10.29.0.4 10.29.0.11 10.29.0.12 10.29.0.13 10.29.0.14
执行以下命令运行脚本后,仅得到以下输出
root@VPS:~#./sendingfiles.sh
root@VPS:~#
有时我会收到一条错误消息,提示主机连接超时,但没有告诉我哪个主机发生故障,我也不知道哪个主机已成功重启
答案1
变量“$?”存储前一条命令的结果。
- 0 = 成功
- 1-127 = 记录错误
- (-128)-(-1)=操作系统通过某个信号终止了该程序
因此也许:
sshpass -p password ssh root@$server /sbin/reboot
if [ $? -eq 0 ]; then
echo "$server - Successfully rebooted"
else
echo "$server - Failed to reboot"
fi
答案2
cat server-list.txt
否more server-list.txt
(更多内容已分页)- 如果你正在编写脚本,使用无密钥密码可能比通过
sshpass -p password
- 使用
$()
而不是`例如for server in $(cat server-list.txt)
最后,脚本中有一些 echo 语句
附言:这个问题最好在 SuperUser 上提出