gpt4 book ai didi

shell 脚本 ssh 命令退出状态

转载 作者:行者123 更新时间:2023-12-04 14:49:00 25 4
gpt4 key购买 nike

在 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将以远程命令的退出代码退出。例如:

$ ssh localhost exit 10
$ echo $?
10

所以在你的 ssh 之后命令退出,您可以简单地检查 $? .您需要确保没有掩盖您的返回值。例如,您的 ssh 命令以:
echo $?

这将始终返回 0。您可能想要的是更像这样的内容:
while read HOST; do
echo $HOST
if ssh $HOST 'somecommand' < /dev/null; then
echo SUCCESS
else
echo FAIL
done

你也可以这样写:
while read HOST; do
echo $HOST
if ssh $HOST 'somecommand' < /dev/null
if [ $? -eq 0 ]; then
echo SUCCESS
else
echo FAIL
done

关于shell 脚本 ssh 命令退出状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15390978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com