【问题标题】:Globalprotect VPN batch file or C# codeGlobalprotect VPN 批处理文件或 C# 代码
【发布时间】:2016-04-08 07:27:38
【问题描述】:

您好我正在尝试使用 GlobalProtect VPN 客户端连接到 VPN 网络。我可以使用 UI 来做到这一点,但我希望这是自动化的。在另一个我使用 Sonicwall Nettextender 的项目中,我创建了一个批处理文件,我从我的 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

【问题讨论】:

  • 你试过了吗:cd "c:\Program Files (x86)\SonicWALL\SSL-VPN\NetExtender\"
  • 正如我所说的“我正在尝试找到一种类似的方法来使用 Globalprotect 实现它”。 Netextender 不是问题。

标签: c# windows visual-studio batch-file vpn


【解决方案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 客户端执行此操作。但是,我最近扩展了出色的开源 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兼容的,这个没有什么特别的。)

    【讨论】:

    【解决方案3】:

    globalprotect VPN 客户端无法实现这样的自动化

    【讨论】:

      猜你喜欢
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      相关资源
      最近更新 更多