Globalprotect *** 批处理文件或 C# 代码
Posted
技术标签:
【中文标题】Globalprotect *** 批处理文件或 C# 代码【英文标题】:Globalprotect *** batch file or C# code 【发布时间】:2016-04-08 07:27:38 【问题描述】:您好我正在尝试使用 GlobalProtect *** 客户端连接到 *** 网络。我可以使用 UI 来做到这一点,但我希望这是自动化的。在另一个我使用 Sonicwall Nettextender 的项目中,我创建了一个批处理文件,我从我的 C# 代码中调用它,因此我将通过调用批处理文件连接到 ***,执行一些操作并使用另一个批处理文件断开连接。我正在尝试使用 Globalprotect 找到类似的方法来实现它。我与 Netextender 一起使用的命令行参数似乎不适用于 PanGPA.exe。任何想法我怎么能做到这一点?到目前为止,我对批处理文件没有任何运气。 netextender 批处理文件是:
cd c:\Program Files (x86)\SonicWALL\SSL-***\NetExtender\
NECLI connect -s 122.254.213.256 -d DNAME -u UNAME -p PASSWORD
【问题讨论】:
你试过了吗:cd "c:\Program Files (x86)\SonicWALL\SSL-***\NetExtender\"
?
正如我所说的“我正在尝试找到一种类似的方法来使用 Globalprotect 实现它”。 Netextender 不是问题。
【参考方案1】:
通过虚拟单击“连接”按钮,有点“被黑”的解决方法为我在 Windows 上解决了这个问题。这可以使用 NirSoft 的“NirCmd”命令行工具(1) 使用以下命令来完成:
NIRCMD win child class "#32770" sendmsg id 1160 0xF5 0 0
实际上,这向按钮发送了BM_CLICK窗口消息,其中“#32770”是其对话窗口的类名,“1160”(十进制)是“连接”按钮的ItemID和0xF5,根据(2),是 BM_CLICK 消息的数字 Win32 API 常量。这模拟了正常的用户操作,就好像他/她会手动单击按钮一样。再次单击该按钮(手动或通过调用相同的命令)会导致已建立的连接断开。
在我的例子中,只配置了一个连接 - 如果列表中有多个连接,则可能会发生不同的事情,因为用户可能必须决定使用哪个连接。
请小心,因为类名和 ItemID 值在另一台机器或 GlobalProtect 代理的版本/构建上可能不同。这些值对我有用,因为我使用 NirSoft (3) 的“WinExplorer”工具通过捕获按钮控件并查找其详细信息来计算它们。至少,类名和 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
【讨论】:
【参考方案2】:更新:只需使用 OpenConnect v8.00 或更新版本。 GlobalProtect 支持已纳入“官方”OpenConnect 构建 as of v8.00。因此,GP 支持将在最近的官方版本中使用 Just Work™。
——
您无法使用官方 GP 客户端执行此操作。但是,我最近扩展了出色的开源 *** 客户端 OpenConnect 以支持 PAN GlobalProtect ***,包括 SSL-*** 和 IPsec/ESP 模式。它就像一个本地客户端,您可以从命令行以完全自动化的方式运行它。
这是一个work in progress,但我已经将它用于实际工作,它对我来说效果很好。 让其他人测试它会很棒,我欢迎您的反馈!
您需要从此存储库构建 globalprotect
分支:
https://github.com/dlenski/openconnect
...然后像这样运行它来测试它(如果您的 *** 不使用客户端证书,您可以省略 --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兼容的,这个没有什么特别的。)
【讨论】:
如何在 Windows 上构建这个 repo? @kizilsu,我不使用 Windows,尤其不用于软件开发。最终它应该被整合到 Windows GUI 中(参见github.com/openconnect/openconnect-gui/issues/158)。【参考方案3】:globalprotect *** 客户端无法实现这样的自动化
【讨论】:
以上是关于Globalprotect *** 批处理文件或 C# 代码的主要内容,如果未能解决你的问题,请参考以下文章
Linux (MacOS) 使用openconnect连接GlobalProtect SSL VPN网络
Palo Alto Global Protect 使用Cisco VPN Client
错误:'keytool' 不是内部或外部命令、可运行程序或批处理文件