Globalprotect VPN 批处理文件或 C# 代码
Globalprotect VPN batch file or C# code
您好,我正在尝试使用 GlobalProtect VPN 客户端连接到 VPN 网络。我可以使用 UI 来做到这一点,但我希望这是自动化的。在我使用 Sonicwall Netextender 的另一个项目中,我创建了一个从我的 C# 代码调用的批处理文件,因此我将通过调用批处理文件连接到 VPN,执行一些操作并使用另一个批处理文件断开连接。我正在尝试使用 Globalprotect 找到类似的方法来实现它。我在 Netextender 中使用的命令行参数似乎不适用于 PanGPA.exe。任何想法我怎么能做到这一点?到目前为止,我对批处理文件没有任何运气。
netextender 批处理文件是:
cd c:\Program Files (x86)\SonicWALL\SSL-VPN\NetExtender\
NECLI connect -s 122.254.213.256 -d DNAME -u UNAME -p PASSWORD
globalprotect VPN 客户端无法实现此类自动化
更新:只需使用 OpenConnect v8.00 或更新版本。 GlobalProtect 支持已纳入 "official" OpenConnect 版本 as of v8.00。因此 GP 支持将在最近的官方版本中正常工作。
————
您不能使用官方 GP 客户端执行此操作。然而,我最近扩展了出色的开源 VPN 客户端 OpenConnect 以支持 PAN GlobalProtect VPN,包括 SSL-VPN 和 IPsec/ESP 模式。它就像本地客户端一样,您可以从命令行以完全自动化的方式 运行 它。
这是一个 work in progress,但我已经在实际工作中使用它,它对我来说效果很好。 让其他人测试它会很棒,我欢迎您的反馈!
您需要从该存储库构建 globalprotect
分支:
https://github.com/dlenski/openconnect
... 然后 运行 像这样测试它(如果您的 VPN 不使用客户端证书,您可以省略 --certificate
部分):
echo password | openconnect --user username --passwd-on-stdin \
--protocol=gp [--certificate=my_cert_with_pk.pem] \
gp-gateway-server.company.com --dump -vvv
(我还没有在Windows下测试过这个构建,但是官方的OpenConnect构建都是Windows兼容的,没有什么特别的关于这个。)
通过虚拟单击 "Connect" 按钮的某种 "hacked" 解决方法解决了我在 Windows 上的问题。这可以使用 NirSoft 的 "NirCmd" 命令行工具 (1) 使用以下命令来完成:
NIRCMD win child class "#32770" sendmsg id 1160 0xF5 0 0
实际上,这会向按钮发送 BM_CLICK window 消息,其中“#32770”是其对话框 class 的名称 window,“1160” (十进制)是 "Connect" 按钮的 ItemID,根据 (2),0xF5 是 BM_CLICK 的数值 Win32 API 常量信息。这模拟了正常的用户操作,就好像 s/he 会手动单击按钮一样。再次单击该按钮(手动或通过调用同一命令)会导致已建立的连接断开。
在我的例子中,只配置了一个连接——如果列表中有多个连接,可能会发生不同的事情,因为用户可能必须决定使用哪个连接。
小心,因为 class 名称和 ItemID 值在另一台机器或 GlobalProtect 代理的 version/build 上可能不同。这些值对我有用,因为我使用 NirSoft (3) 的 "WinExplorer" 工具通过捕获按钮控件并查找其详细信息来计算它们。至少,class 名称和 ItemID 似乎都是持久的,这意味着程序崩溃、终止或重新启动不会导致任何更改。
参考文献:
(1) https://www.nirsoft.net/utils/nircmd.html
(2) http://www.jasinskionline.com/windowsapi/ref/b/bm_click.html
(3) https://www.nirsoft.net/utils/winexp.html
您好,我正在尝试使用 GlobalProtect VPN 客户端连接到 VPN 网络。我可以使用 UI 来做到这一点,但我希望这是自动化的。在我使用 Sonicwall Netextender 的另一个项目中,我创建了一个从我的 C# 代码调用的批处理文件,因此我将通过调用批处理文件连接到 VPN,执行一些操作并使用另一个批处理文件断开连接。我正在尝试使用 Globalprotect 找到类似的方法来实现它。我在 Netextender 中使用的命令行参数似乎不适用于 PanGPA.exe。任何想法我怎么能做到这一点?到目前为止,我对批处理文件没有任何运气。 netextender 批处理文件是:
cd c:\Program Files (x86)\SonicWALL\SSL-VPN\NetExtender\
NECLI connect -s 122.254.213.256 -d DNAME -u UNAME -p PASSWORD
globalprotect VPN 客户端无法实现此类自动化
更新:只需使用 OpenConnect v8.00 或更新版本。 GlobalProtect 支持已纳入 "official" OpenConnect 版本 as of v8.00。因此 GP 支持将在最近的官方版本中正常工作。
————
您不能使用官方 GP 客户端执行此操作。然而,我最近扩展了出色的开源 VPN 客户端 OpenConnect 以支持 PAN GlobalProtect VPN,包括 SSL-VPN 和 IPsec/ESP 模式。它就像本地客户端一样,您可以从命令行以完全自动化的方式 运行 它。
这是一个 work in progress,但我已经在实际工作中使用它,它对我来说效果很好。 让其他人测试它会很棒,我欢迎您的反馈!
您需要从该存储库构建 globalprotect
分支:
https://github.com/dlenski/openconnect
... 然后 运行 像这样测试它(如果您的 VPN 不使用客户端证书,您可以省略 --certificate
部分):
echo password | openconnect --user username --passwd-on-stdin \
--protocol=gp [--certificate=my_cert_with_pk.pem] \
gp-gateway-server.company.com --dump -vvv
(我还没有在Windows下测试过这个构建,但是官方的OpenConnect构建都是Windows兼容的,没有什么特别的关于这个。)
通过虚拟单击 "Connect" 按钮的某种 "hacked" 解决方法解决了我在 Windows 上的问题。这可以使用 NirSoft 的 "NirCmd" 命令行工具 (1) 使用以下命令来完成:
NIRCMD win child class "#32770" sendmsg id 1160 0xF5 0 0
实际上,这会向按钮发送 BM_CLICK window 消息,其中“#32770”是其对话框 class 的名称 window,“1160” (十进制)是 "Connect" 按钮的 ItemID,根据 (2),0xF5 是 BM_CLICK 的数值 Win32 API 常量信息。这模拟了正常的用户操作,就好像 s/he 会手动单击按钮一样。再次单击该按钮(手动或通过调用同一命令)会导致已建立的连接断开。
在我的例子中,只配置了一个连接——如果列表中有多个连接,可能会发生不同的事情,因为用户可能必须决定使用哪个连接。
小心,因为 class 名称和 ItemID 值在另一台机器或 GlobalProtect 代理的 version/build 上可能不同。这些值对我有用,因为我使用 NirSoft (3) 的 "WinExplorer" 工具通过捕获按钮控件并查找其详细信息来计算它们。至少,class 名称和 ItemID 似乎都是持久的,这意味着程序崩溃、终止或重新启动不会导致任何更改。
参考文献:
(1) https://www.nirsoft.net/utils/nircmd.html
(2) http://www.jasinskionline.com/windowsapi/ref/b/bm_click.html
(3) https://www.nirsoft.net/utils/winexp.html