gpt4 book ai didi

linux - SSH 远程命令退出代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:27 26 4
gpt4 key购买 nike

我知道有很多关于它的讨论,但我需要你帮助解决 ssh 远程命令退出代码。我有那个代码:(scan 是一个脚本,用于扫描给定文件中的病毒)

for i in $FILES 
do
RET_CODE=$(ssh $SSH_OPT $HOST "scan $i; echo $?")
if [ $? -eq 0 ]; then
SOME_CODE

扫描有效,它返回 0 或(错误为 1)或 2(如果发现病毒)。但不知何故,我的返回代码始终为 0。即使我扫描了病毒。

这是 set -x 输出:

++ ssh -i /home/USER/.ssh/id host 'scan Downloads/eicar.com; echo 0'
+ RET_CODE='File Downloads/eicar.com: VIRUS: Virus found.
code of the Eicar-Test-Signature virus
0'

如果我在没有 ssh 的“远程”机器上运行这些命令,这里是输出:

[user@ws ~]$ scan eicar.com; echo $?
File eicar.com: VIRUS: Virus found.
code of the Eicar-Test-Signature virus
2

我只想得到返回码,我不需要scan的所有其他输出。

!更新!

看来,echo 是问题所在。

最佳答案

您的 ssh 总是返回 0 的原因是因为最后的 echo 命令总是成功的!如果您想从 scan 中获取返回码,请删除 echo 或将其分配给变量并使用 exit。在我的系统上:

$ ssh host 'false'
$ echo $?
1
$ ssh host 'false; echo $?'
1
$ echo $?
0
$ ssh host 'false; ret=$?; echo $ret; exit $ret'
1
$ echo $?
1

关于linux - SSH 远程命令退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52593583/

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