gpt4 book ai didi

linux - 跳过堡垒后在远程服务器上获取退出代码

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:28 25 4
gpt4 key购买 nike

我想获取远程命令的退出代码。这通常很容易,但我需要通过堡垒主机执行我的命令,但我不知道如何使用简单的方法。

所以,这是我的架构图。

PC => Bastion => remote host

我使用这段代码来执行我的命令并检查返回码:

ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -At ubuntu@$ip_bastion ssh -Aq -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ubuntu@$ip_server bash <<EOF
{ ${cmd} ; } 2>&1 | sed -e 's/^/$(colors_next exec)$region:$ip:$type${normal} /'
EOF
echo $?
if [[ $? -ne 0 ]]; then
error "Error during the command execution."
exit 1
fi

但是,返回代码始终等于 0,而我的命令失败(在最终服务器上返回 255)。

感谢您的帮助:)

最佳答案

如果您使用的是 bash,则可以使用 PIPESTATUS 数组变量来获取管道中每个元素的退出状态。

ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -At ubuntu@$ip_bastion ssh -Aq -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ubuntu@$ip_server bash <<EOF
{ ${cmd} ; } 2>&1 | sed -e 's/^/$(colors_next exec)$region:$ip:$type${normal} /'
exit "\${PIPESTATUS[0]}"
EOF
remote_exitcode=$?
echo "remote_exitcode=${remote_exitcode}"
if [[ ${remote_exitcode} -ne 0 ]]; then
error "Error during the command execution."
exit 1
fi

关于linux - 跳过堡垒后在远程服务器上获取退出代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55288775/

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