Skip to main content
 首页 » 编程设计

python之如何将控制从我的 python 脚本返回到调用 bash 脚本

2025年05月04日7lidabo

我正在使用 bash 脚本来遍历配置文件,并在此基础上通过 ssh 调用 python 脚本。不幸的是,一旦 Python 脚本完成它的工作并且我调用 quit,bash 脚本也会关闭,因此调用 bash 脚本的循环会提前终止。

这是我的 Bash 脚本

target |  grep 'srv:'  | while read l ; do srv $l $SSH ; done 
 
 srv () { 
 SSH=$2 
 SRV=`echo $1 | awk -F: '{print $2}'` 
 STATUS=`echo $1 | awk -F: '{print $3}'` 
 open $SSH "srv" $SRV $STATUS 
 } 

然后在调用python脚本的远程机器上

if __name__== "main": 
   redirect('./Server.log', 'false') 
   conn() 
   if sys.argv[1] == "srv": 
     ServerState(sys.argv[2], sys.argv[3]) 
   quit() 

看起来 quit() 也中断了脚本。

请您参考如下方法:

除非您在本地 bash 中执行了 set -e,否则远程 Python 脚本所做的任何事情都不能终止您的 do 循环> 首先让它对命令失败敏感——在这种情况下,只有当,正如@EOL 所说,你的远程脚本遇到异常并向 SSH 返回一个非零/错误值,然后它会死于一个非零/错误代码本地。

如果将 do srv 替换为 do echo srv 以便您只打印出您认为正在运行的命令,会发生什么情况?您是否看到多个 srv 命令行被打印出来,它们是否具有您期望的参数?

哦:还有,你为什么要使用 open 为命令的每次运行分配一个新的 Linux 虚拟终端?这样你不会用完虚拟终端吗?