gpt4 book ai didi

linux - Shell 脚本未完全执行并在中间退出

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

在下面的代码(将在我的 Linux 计算机上运行)中,我尝试将 run_check_node.sh 复制到两个不同的远程 Linux 计算机,然后仅从我的计算机执行该脚本。

问题:run_check_node.sh 脚本的执行时间大约为 25 分钟。但远程 Linux 计算机上的 run_check_node.sh 脚本执行大约 3-4 分钟后停止,然后进行下一次 for 循环迭代。同样的事情也会发生在下一次迭代中。我尝试使用 set timeout 1200 来解决这 25 分钟的问题,但仍然存在同样的问题。任何人都可以帮忙做什么吗?

问题:我使用的机器IP有时会要求输入密码,有时则不会。所以,我对此充满期待。因此,如果没有询问密码,它只会在控制台上抛出一些消息,然后继续执行下面的脚本。请告知这是否是正确的处理方式,是否会询问密码?

#!/bin/bash

Linux1_ip=10.20.30.40
Linux2_ip=10.100.20.30
pass="Gaur"

IP=("$Linux1_ip" "$Linux2_ip")
home="/post_checks"


############################ Linux_ip CHECKS ####################################
for ne in "${IP[@]}"
do
expect -c "
spawn ssh root@$ne \"mkdir /post_checks_$ne\"
expect yes/no { send yes\r; exp_continue }
expect password { send $pass\r; exp_continue }
exit
"
expect -c "
spawn scp $home/run_check_node.sh root@$ne:/post_checks_$ne/
expect yes/no { send yes\r; exp_continue }
expect password { send $pass\r; exp_continue }
exit
"
expect -c "
spawn ssh root@$ne \"chmod +x /post_checks_$ne/run_check_node.sh; bash /post_checks_$ne/run_check_node.sh\"
expect yes/no { send yes\r; exp_continue }
expect password { send $pass\r; exp_continue }
exit
"
fi
done

最佳答案

现在,这可能无法解释为什么您会看到所看到的内容,但这可能是一个有用的解决方法。

您尝试在远程后台执行run_check_node.sh shell 脚本怎么样?然后您可以断开连接并让它自行完成。

所以,基本上,你的第三条产卵线将是:

spawn ssh root@$ne \"chmod +x /post_checks_$ne/run_check_node.sh; bash /post_checks_$ne/run_check_node.sh &\"

如果您需要检查 shell 脚本的完成情况,我的建议是 Not Acceptable ...但我没有看到您的 Bash 脚本对此进行任何检查,所以我认为它可能适合您。

尝试一下并让我知道效果如何。

关于linux - Shell 脚本未完全执行并在中间退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24405011/

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