我需要通过远程ssh执行的命令的返回代码。
result=$(ssh $TARGET_USER@$TARGET_SERVER \
'cp /tmp/test1.txt \
/tmp1/test2.txt')
上述命令失败时
我想执行一些警报操作。
但是结果变量的输出似乎始终为空
任何想法,我如何利用结果变量
当我执行上述命令时,我得到了
cp:无法创建常规文件“ /tmp1/test2.txt”:没有此类文件或目录
答案 0 :(得分:0)
只需检查退出代码:
result=$(ssh $TARGET_USER@$TARGET_SERVER 'cp /tmp/test1.txt /tmp1/test2.txt' 2>/dev/null)
[[ $? -ne 0 ]] && your_error_flow
来自 man ssh :
ssh exits with the exit status of the remote command or with 255 if an error occurred.
答案 1 :(得分:0)
我还没有测试过,但这值得一试:
result=$(ssh $TARGET_USER@$TARGET_SERVER \
'cp /tmp/test1.txt \
/tmp1/test2.txt 2>&1 > /dev/null')
This answer here说明了如何将stderr
捕获到变量中。我只是将它应用于您的命令(我认为stdout
不需要这样做)
如果它按预期工作,则您提到的“无此类文件或目录”错误将被捕获到此变量中。因此,您将获得一个可微分的值,该值可能允许您的代码“知道”命令是否成功(理论上,如果命令成功,{stderr
将为空)