OpenVPN Connection on startup (Windows) 仅当不在家时

OpenVPN Connection on startup (Windows) only if not at home

我希望我的 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,没有问题。

请不要对德国的回声感到奇怪。 非常感谢,

黑钻

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


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

@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

您需要做的最后一件事是将 link 放入 .bat-file 中,您将此代码放入启动目录中。您可以通过按 WIN+R 并输入 shell:startup.

找到它

放心使用吧,希望能帮到所有想拥有这个功能,但又不像我之前那样习惯编程的人。

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

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

还有第二个任务,只要您与 wifi 的断开连接正常,它就会处理断开连接。它只会终止名称中带有“openvpn”的每个任务,因此您可以继续进行下一个连接。

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