在 Ubuntu 22 上,使用 Python 3.10,我需要设置 VPN 连接并分析来自 VPN 服务器的响应。我这样做如下:connect_command = ['ip', 'netns', 'exec', 'vpn_test_namespace', '
在 Ubuntu 22 上,使用 Python 3.10,我需要建立 VPN 连接并分析来自 VPN 服务器的响应。我按如下方式执行此操作:
connect_command = ['ip', 'netns', 'exec', 'vpn_test_namespace', 'ipsec', 'up', 'vpn_test_config']
connect_process = subprocess.Popen(connect_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
connect_output, connect_error = connect_process.communicate()
但是,该过程不会等待完成,并且communicate()会立即执行。因此,connect_output和connect_error为空。如果我添加一个暂停:
connect_command = ['ip', 'netns', 'exec', 'vpn_test_namespace', 'ipsec', 'up', 'vpn_test_config']
connect_process = subprocess.Popen(connect_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
time.sleep(3)
connect_output, connect_error = connect_process.communicate()
或者使用断点等待,然后一切正常,我可以看到结果。我做错了什么?
我尝试了 StackOverflow 或 Google 上推荐的各种方法,例如 call()、check_call()、wait()、run(),但无法达到让脚本等待进程完成的预期结果。