在shell脚本中的循环中,我正在连接到不同的服务器并运行一些命令。例如:
#!/bin/bash
FILENAME=$1
cat $FILENAME | while read HOST
do
0</dev/null ssh $HOST 'echo password| sudo -S
echo $HOST
echo $?
pwd
echo $?'
done
这里,我正在运行“ echo $HOST”和“ pwd”命令,并通过“ echo $?”获取退出状态。
我的问题是,我想能够将远程运行的命令的退出状态存储在某个变量中,然后(根据命令是否成功),将日志写入本地文件。
感谢任何帮助和代码。
ssh localhost exit 10
是什么意思吗?这是指执行带有显式状态码10的ssh localhost命令吗?在这里,exit是ssh或Linux命令exit
的一个选项吗? - Gab是好人ssh <主机名> <命令>
。因此,在上面的答案中,exit 10
是传递给远程shell的命令。 - larsksssh remotehost bash < your_script.sh
,如果出现错误,请确保您的脚本以适当的错误代码退出。在这种情况下,set -e
可能很有用,它会导致脚本在脚本中的任何命令失败时中止并显示错误。虽然如果您在许多主机上运行许多命令,那么现在可能是您应该考虑使用 Ansible 或类似工具的时候了。 - larsks