如何将远程 sshpass 命令的退出代码写入本地脚本中的变量以供进一步使用?
我正在使用 sshpass 来远程执行命令。我知道基于证书的身份验证更好,但这不是我的系统,我无法设置基于证书的身份验证。
我的问题是我无法将远程命令的退出代码捕获到我的变量 $errm 中。
我的命令如下所示:
#!/bin/bash
sshpass -p $pass ssh -o StrictHostkeyChecking=no -t $user@$Hostip 'touch /does/not/exist.txt &>/dev/null errm=$?'
echo $errm
echo $errm
无论我给它一个真实路径还是/does/not/exist.txt,都不会显示任何内容。但是,如果我提供有效路径,则该文件是远程创建的,因此与 sshpass 相关的所有内容都可以工作,但我只是无法捕获退出代码。
但是,如果我这样做,至少我的脚本会显示远程命令运行时的退出代码,但正如我所提到的,我无法在变量中捕获它以便在同一脚本中进一步使用
sshpass -p $pass ssh -o StrictHostkeyChecking=no -t $user@$Hostip 'touch /does/not/exist.txt &>/dev/null && echo $? || echo $?'
我认为问题与我的脚本在本地运行时在远程系统上抛出的错误代码有关!?
答案1
我自己找到了解决方案:
sshpass -p $passvar ssh -o StrictHostkeyChecking=no -t $uservar@$ItemHostIp 'touch /does/not/exist.txt &>/dev/null'; errm=$?