问题描述
我希望我的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,没有问题。
请不要怀疑德国的回声。 非常感谢你,
DarkDiamond
解决方法
经过一番研究,我发现问题出在“任务计划程序”。因此,修复后没有问题,但这对这个问题并不重要。
这里是提出的问题的解决方案:
@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
来找到它。
随时使用此功能,希望对那些想拥有此功能但不像以前那样习惯编程的人有所帮助。
,我对此主题进行了更多的研究,发现我现在使用的东西非常有用,而不是我自己的小批处理文件,因为它可以完成我想要的工作,并且总是在连接到wifi并执行时不仅检查启动。在Windows任务计划程序中使用此任务,该任务在后台运行,自配置该任务以来,我再也无需考虑。
These 2个xml文件必须完全按照安装说明的描述进行编辑,然后它可以很好地满足我的需要。也可以禁用所有弹出窗口,但是要使此弹出窗口起作用,您需要将OpenVPN连接的密码以纯文本格式存储在配置文件旁边,我不想这样做。如果执行此操作,则必须非常小心,无论谁接触这两个文件,都可以使用您的凭据连接到您的VPN服务器(可能在所有防火墙后面的家庭局域网中!),因此可以窃取数据甚至在整个网络中传播病毒。考虑到这一点,我绝对不建议您使用此选项,而是每次便携式计算机连接到不同于您家的wifi时手动输入密码。
还有第二项任务,只要您断开与wifi的连接,它就会处理断开连接。它只会杀死名称中带有“ openvpn”的每个任务,因此您可以进行下一个连接。
我自己没有弄清楚这一点,所有功劳归功于编写任务的Carlin Scott。我只是想与您分享我的结果,因为您在第一个解决方案中对我有很大帮助。