【问题标题】:OpenVPN Connection on startup (Windows) only if not at home仅在不在家时启动时的 OpenVPN 连接 (Windows)
【发布时间】:2021-02-14 11:42:08
【问题描述】:

我希望我的 OpenVPN 在启动时自动连接,但前提是我不在家时。在这个社区的一些帮助下,我能够编写一个批处理脚本,应该这样做,但它不断抛出错误“-connect”无法解析为参数,因为找不到“--”,但是有一个“--”。我的错在哪里?

@echo off
set "SSID=Home_Network_SSID"
(netsh wlan show networks mode=ssid | findstr /C:"%SSID%" >nul 2>&1)&&goto :Home
echo "Nicht zu Hause, VPN wird verbunden...
start "OpenVPN" "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect profile.ovpn
timeout /T 5
echo "VPN wurde gestartet"
goto :end

:Home
echo "Heimnetzwerk erkannt, VPN wird nicht verbunden."
timeout /T 5
goto :end

此外,如果我在家,它也会向客户端发起查询,因此它实际上不起作用。 如果我把

"C:\Program Files\OpenVPN\bin\openvpn-gui.exe --connect profile.ovpn"

直接进入cmd,没有问题。

请不要怀疑德国的回声。 非常感谢,

暗钻

【问题讨论】:

  • 应该是findstr /C:"%SSID%"。您的变量中的空格存在很大问题。
  • 我建议使用Start "OpenVPN" "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect profile.ovpn这假定profile.ovpn 位于当前目录中,或通常由openvpn-gui.exe 解析的位置,否则,您可能需要向Start 提供/D 选项和参数。 (你甚至可能根本不需要使用Start,顺便说一句,"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect profile.ovpn,或者后面的timeout。)
  • 我试过这个,但没有用。我将在帖子中更改我的代码,所以现在是这样。
  • 在删除 @echo off>nul 2>&1 的情况下运行,并检查(和/或共享)输出。
  • @Stephan 我这样做了,问题是里面有个人信息,所以我就不按原来的方式发布了,稍微改动一下,希望还是有用的:`C :\Users\My_Name\Documents>set "SSID=My_SSID" C:\Users\My_Name\Documents>(netsh wlan show networks mode=ssid | findstr /C:"My_SSID" ) && goto :Home SSID 2 : My_SSID Guest_Network SSID 3 : My_SSID C:\Users\My_Name\Documents>echo "Heimnetzwerk erkannt, VPN wird nicht verbunden." “Heimnetzwerk erkannt,VPN wird nicht verbunden。” C:\Users\My_Name\Documents>timeout /T 50 ` 抱歉,格式不正确

标签: windows cmd vpn startup openvpn


【解决方案1】:

经过一番研究,我发现问题出在“任务计划程序”上。所以,修复后没有问题,但这对于这个问题并不重要。


这里是提出问题的解决方案:

@echo off
set "SSID=Home_Network_SSID"
(netsh wlan show networks mode=ssid | findstr /C:"%SSID%")&&goto :Home
echo Not at home, starting VPN...
start "OpenVPN" "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect profile.ovpn
timeout /T 5
echo VPN has been started.
goto :end

:Home
echo Home network detected, VPN will not be connected.
timeout /T 5
goto :end

:end

为了使其正常工作,您的 profile.ovpn 需要位于 OpenVPN 客户端扫描的目录中,或者是您的个人文件夹 C:\Users\Your_Name\OpenVPN\config\Some_Folder 或公用文件夹C:\Program Files\OpenVPN\config

您需要做的最后一件事是将指向您将此代码放入的 .bat 文件的链接放入启动目录。您可以通过按 WIN+R 并输入 shell:startup 来找到它。


请随意使用,希望能帮到所有想拥有这个功能但不习惯编程的人。

【讨论】:

  • 所以错误实际上是找不到profile.ovpn?哇 - 这真是一个误导性的错误信息!
【解决方案2】:

我对这个主题做了更多的研究,发现了一些非常有用的东西,我现在使用它而不是我自己的小批处理文件,因为它可以完成我想要它做的事情,并且总是在我连接到 wifi 时,并且不仅检查启动。在 Windows 任务调度程序中使用这个任务,它在后台运行,自从我配置它以来,我从来没有考虑过它。

These 2 xml 文件必须完全按照安装说明的描述进行编辑,然后它就可以很好地满足我的需要。也可以禁用所有弹出窗口,但为了使其正常工作,您需要将 OpenVPN 连接的密码以纯文本形式存储在配置文件旁边,我不想这样做。如果你这样做,你必须非常小心,谁得到了这两个文件,谁就可以使用你的凭据连接到你的 vpn 服务器(它可能在你所有防火墙后面的家庭局域网中!),因此可以窃取数据甚至在整个网络中放置病毒。考虑到这一点,我绝对不建议使用此选项,而是每次笔记本电脑连接到与您家不同的 wifi 时手动输入密码。

还有第二个任务,只要您从 wifi 断开连接正常工作,它就会处理断开连接。它只会杀死名称中带有“openvpn”的所有任务,因此您可以进行下一个连接。

这不是我自己想出来的,所有的功劳归于编写任务的Carlin Scott。我只是想与您分享我的结果,因为您在第一个解决方案方面帮助了我很多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    相关资源
    最近更新 更多