如何与我从脚本登录的新Shell交互?

时间:2019-01-06 16:22:19

标签: python bash shell

无法将命令发送到我登录的shell

最初,我写了一个Python脚本。它能够发送类似

的命令
subprocess.run(['kubectl', 'config', 'get-context'], shell=True)

但是要到子shell时(在本例中为bash),该命令要等到我退出该shell后才会运行,并且会说找不到该命令。

然后我尝试使用模块“ sh”执行此操作,但还是失败了

我以为使用Python可能是个问题,并且也意识到我的最终目标是使用另一个shell(cypher-shell),因此立即以bash作为父shell跳过了它。在那里,我有一条线有时会成功,有时却不会成功

kubectl run -it --rm cypher-shell   --image=gcr.io/cloud-marketplace/neo4j-public/causal-cluster-k8s:3.4   --restart=Never   --namespace=default   --command -- ./bin/cypher-shell -u neo4j   -p "password" -a "domain.name"

但是即使成功登录,它也会挂起,直到我手动退出,然后运行下一个命令

注意:我看到了,所以,也许这不是子弹吗? Run shell command from child shell

1 个答案:

答案 0 :(得分:0)

我不能说我确切地知道您在做什么,但是如果我正确地理解了您的目标,您希望Python程序在脚本继续运行的同时继续记录吗?问题在于记录器将继续运行并保留您的程序。我要处理的方法是将记录器作为后台进程运行。

使用bash时,将是./script.sh &,这将使其运行而不会阻止程序的其余部分运行。

希望这会给您一个想法!祝你好运。