在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
Run Code Online (Sandbox Code Playgroud)
在这里我运行"echo $ HOST"和"pwd"命令,我通过"echo $?"获得退出状态.
我的问题是,我希望能够在一些变量中存储远程运行的命令的退出状态,然后(根据命令是否成功),将日志写入本地文件.
任何帮助和代码表示赞赏.
lar*_*sks 26
ssh将使用远程命令的退出代码退出.例如:
$ ssh localhost exit 10
$ echo $?
10
Run Code Online (Sandbox Code Playgroud)
所以在你的ssh命令退出后,你可以简单地检查一下$?.您需要确保不屏蔽返回值.例如,您的ssh命令完成:
echo $?
Run Code Online (Sandbox Code Playgroud)
这将始终返回0.你可能想要的是更像这样的东西:
while read HOST; do
echo $HOST
if ssh $HOST 'somecommand' < /dev/null; then
echo SUCCESS
else
echo FAIL
done
Run Code Online (Sandbox Code Playgroud)
你也可以这样写:
while read HOST; do
echo $HOST
if ssh $HOST 'somecommand' < /dev/null
if [ $? -eq 0 ]; then
echo SUCCESS
else
echo FAIL
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50982 次 |
| 最近记录: |