Globalprotect VPN批处理文件或C#代码
您好,我正在尝试使用GlobalProtect VPN客户端连接到VPN网络。我可以使用UI来完成,但我希望这是自动化的。在另一个使用Sonicwall Netextender的项目中,我创建了一个批处理文件,我从C#代码调用该文件,这样我就可以通过调用批处理文件连接到VPN,执行一些操作,并使用另一个批处理文件断开连接。我正试图用Globalprotect找到一种类似的方法来实现它。我在Netextender中使用的命令行参数似乎与PanGPA.exe不兼容。你知道我该怎么做吗?到目前为止,我在批处理文件方面没有任何运气。 netextender批处理文件是:Globalprotect VPN批处理文件或C#代码,c#,windows,visual-studio,batch-file,vpn,C#,Windows,Visual Studio,Batch File,Vpn,您好,我正在尝试使用GlobalProtect VPN客户端连接到VPN网络。我可以使用UI来完成,但我希望这是自动化的。在另一个使用Sonicwall Netextender的项目中,我创建了一个批处理文件,我从C#代码调用该文件,这样我就可以通过调用批处理文件连接到VPN,执行一些操作,并使用另一个批处理文件断开连接。我正试图用Globalprotect找到一种类似的方法来实现它。我在Netextender中使用的命令行参数似乎与PanGPA.exe不兼容。你知道我该怎么做吗?到目前为止,我
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支持已纳入“官方”OpenConnect版本。所以全科医生支持就行了™ 与最近的官方建设 --- 您不能使用官方GP客户端执行此操作。然而,我最近扩展了神奇的开源VPN客户端,以支持泛GlobalProtect VPN,包括SSL-VPN和IPsec/ESP模式。它的行为就像一个本地客户端,您可以从命令行以完全自动化的方式运行它 这是一个很好的例子,但我已经在实际工作中使用它了,它对我来说非常有效让其他人测试它会很棒,我欢迎您的反馈强> 您需要从此存储库中构建
globalprotect
分支:
。。。然后像这样运行它来测试它(如果您的VPN不使用客户端证书,您可以省略--certificate
部分):
(我还没有在Windows下测试这个版本,但是官方的OpenConnect版本都是Windows兼容的,而且这个版本没有什么特别之处。)一个有点“黑客”的解决方法,通过虚拟地点击“连接”按钮为我在Windows上解决了这个问题。这可以使用NirSoft的“NirCmd”命令行工具(1)通过以下命令实现:
NIRCMD win child class "#32770" sendmsg id 1160 0xF5 0 0
实际上,这会向按钮发送一条BM#U CLICK窗口消息,其中“#32770”是其对话框窗口的类名,“1160”(十进制)是“Connect”按钮的ItemID,根据(2),0xF5是BM#U CLICK消息的数值Win32 API常量。这将模拟正常的用户操作,就像他/她将手动单击按钮一样。再次单击按钮(手动或通过调用相同的命令)会导致已建立连接断开
在我的例子中,只配置了一个连接-如果列表中有多个连接,则可能会发生不同的情况,因为用户可能必须决定使用哪个连接
请小心,因为在另一台计算机或GlobalProtect代理的版本/内部版本上,类名和ItemID值可能不同。当我使用NirSoft的“WinExplorer”工具(3)捕获按钮控件并查找其详细信息时,这些值对我起到了作用。至少,类名和ItemID看起来都是持久的,这意味着程序崩溃、终止或重新启动不会导致任何更改
参考文献:(1)
(2)
(3) 您是否尝试过:
cd“c:\Program Files(x86)\SonicWALL\SSL-VPN\NetExtender\”
?正如我所说的“我正在尝试使用Globalprotect找到一种类似的方法来实现它”。Netextender不是问题。我如何在windows上构建此repo?@kizilsu,我不使用windows,尤其是不用于软件开发。最终,它应该被整合到Windows GUI中(请参阅)。
NIRCMD win child class "#32770" sendmsg id 1160 0xF5 0 0