Bash 使gitlab作业不必等待任何来自;脚本“;部分
在gitlab管道(gitlab ci.yml)中,我使用SSHPASS通过临时IP来配置基于linux的设备,以实现自动化Bash 使gitlab作业不必等待任何来自;脚本“;部分,bash,gitlab,gitlab-ci,Bash,Gitlab,Gitlab Ci,在gitlab管道(gitlab ci.yml)中,我使用SSHPASS通过临时IP来配置基于linux的设备,以实现自动化 script: - sshpass -p $TARGET_password ssh -o StrictHostKeyChecking=no $TARGET_username@$TARGET_IP 'bash -s' < $configfile 脚本: -sshpass-p$TARGET\u password ssh-o strichostkeychecking
script:
- sshpass -p $TARGET_password ssh -o StrictHostKeyChecking=no $TARGET_username@$TARGET_IP 'bash -s' < $configfile
脚本:
-sshpass-p$TARGET\u password ssh-o strichostkeychecking=no$TARGET\u username@$TARGET\u IP'bash-s'<$configfile
我正在发送一个包含大量命令的脚本,最后一个命令是配置永久IP。
一旦脚本更改了IP,作业就会挂起并无限等待任何返回,因为它丢失了与临时IP的会话
问题:
- 是否可以发送更改IP的命令并立即断开连接,而不等待任何返回
- 是否有gitlab ci指令不等待“脚本”部分的任何返回?
我知道有“成功论”和“失败论”,但这些都是假设我们有一个标准或标准的复述
timeout
实用程序,例如
timeout 10 <your command here>
timeout 10 <your command here> || { EXITCODE=$?; if [ $EXITCODE != 124 ]; then exit $EXITCODE; fi; }
超时10
timeout最妙的一点是,如果达到了timeout,它将退出,错误代码为124,因此如果您的脚本没有将此退出代码用于任何事情,您可以
timeout 10 <your command here>
timeout 10 <your command here> || { EXITCODE=$?; if [ $EXITCODE != 124 ]; then exit $EXITCODE; fi; }
timeout 10 | |{EXITCODE=$?;如果[$EXITCODE!=124];则退出$EXITCODE;fi;}
如果脚本以0或124以外的任何内容退出,则管道将失败
通过以下方式进行测试:
echo sleep 11>晚安.txt
超时10 ssh某些主机“bash-s”
检查其他ssh超时选项是否可以将
$configfile
输入拆分为所有与更改ip无关的内容,然后再拆分为一个更改ip的小脚本?ip是如何改变的?太棒了@Andrew!非常感谢,timeout和ssh timeout选项都非常有用。