mek*_*les 1 python ssh bash fork subprocess
假设存在一个python脚本resolve_ip.py,它神奇地返回了我们关心的机器的字符串IP。
我对学习如何实现与以下bash命令等效的python感兴趣:
user@host:~$ ssh $(./resolve_ip.py)
Run Code Online (Sandbox Code Playgroud)
在此bash示例中,在运行python脚本之后,将其替换或替代为它的返回值,该返回值又作为程序ssh的输入提供。结果是,python程序终止,并且用户与ssh初始化进行交互。
问题是,此解决方案需要使用2个脚本(运行ssh的bash脚本,与python脚本结合使用以返回参数),或者人工干预以直接按上面的格式键入bash命令。
题:
有没有一种方法,仅使用python,通过使用子进程或某些类似的模块来启动/分叉交互式服务(如ssh),并使此分叉的子进程在前台仍处于活动状态,即使其父级(python)拥有sys .exit()要?
注意事项:
在这种情况下,此问题的重点不是编写从Python内部向ssh提交ssh凭据的脚本。它是如何生成子进程的子进程,该子进程在其父/子生成器终止后将继续在前台运行。
编辑:以下资源相关:
我认为您想“ 执行 ”。像这样:
import resolve_ip
import os
host = resolve_ip.get_host_to_use() # you figure this part out
os.execlp('ssh', 'ssh', host)
Run Code Online (Sandbox Code Playgroud)
这将用ssh进程映像替换Python解释器进程映像,并继续运行。因此,最终您将好像运行了ssh而不是Python一样,并且解释器将不再执行。
| 归档时间: |
|
| 查看次数: |
1831 次 |
| 最近记录: |