gpt4 book ai didi

python - 使用 pexpect 和 openconnect 建立一个 vpn 连接

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

我正在尝试创建一个将建立 vpn 连接的脚本。我根据这个 question 为我的脚本建模它对我的目的来说工作正常,但我发现一旦我关闭脚本,vpn 连接就会中断。使用“-b”选项时,我在 child.read() 的末尾得到以下内容:

Established DTLS connection (using GnuTLS). Ciphersuite (DTLS0.9)-(RSA)-(AES-256-CBC)-(SHA1).\r\nSSL operation canceled\r\nUser detached from session (SIGHUP); exiting.\r\n'

这是我的代码:

import os, sys, subprocess, time, re, pexpect
import signal

def signal_handler(sig, frame):
print("sigHUUUUUP")
sys.exit

child = pexpect.spawn('sudo openconnect -b --script /etc/vpnc/vpnc-script remote.host')

child.expect('.*')
child.sendline('yes')

child.expect('.*')
child.sendline('ipsec')

child.expect('.*')
child.sendline('username')

child.expect('.*')
child.sendline('password')
signal.signal(signal.SIGHUP, signal_handler)
time.sleep(15)

我强烈倾向于留在 python 中,但我愿意接受其他运行 openconnect 并为其提供预期密码的方式。主要是寻找一种无需连续运行脚本即可设置 vpn 的方法。

我试过使用 ignore_sighup=True 但它不起作用。

最佳答案

我找到了一种方法来完成我想要的:

import os, sys, subprocess, time, re, pexpect
import signal

def signal_handler(sig, frame):
print("sigHUUUUUP")
sys.exit

child = pexpect.spawn('sudo screen openconnect remote.host')

child.expect('.*')
child.sendline('yes')

child.expect('.*')
child.sendline('ipsec')

child.expect('.*')
child.sendline('username')

child.expect('.*')
child.sendline('password')
child.sendline('\01d')

我将屏幕添加到生成行并添加了“child.sendline('\01d')”我希望这不是实现此目标的唯一方法。

关于python - 使用 pexpect 和 openconnect 建立一个 vpn 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51679581/

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