Можно ли запустить клиент windows openvpn, чтобы он подключился с помощью предопределенного конфига (.ovpn), указав аргументы программы в командной строке. Или указание аргументов в ярлыке при открытии из ярлыка Windows и т.д.
5 ответов
Решил это как ниже:
из командной строки Windows
Это приведет к запуску клиента opn vpn gui, напрямую подключающегося к соединению, указанному в конфигурации.
Имейте в виду, что если openvpn-gui.exe
уже запущен выше, ответы не будут работать. Обратите внимание на раздел:run из небольшого командного файла, который я создал для автоматического запуска соединения openVPN, когда не дома:
rem This script is fired from Task Scheduler (using Custom Event filter) when I am NOT at home (not connected to home network)
rem so check if my home NAS is already pingable, because maybe old/previous OpenVPN connection is still open
rem if not then start OpenVPN connection
rem if yes than do nothing
ping -n 1 192.168.10.100 > testping.txt
findstr /r /c:"Reply from \d*.\d*.\d*.\d*.* bytes=\d*.*time[<=]\d*.* TTL=\d*" testping.txt
IF ERRORLEVEL 1 goto run
rem do nothing because NAS is pingable
goto finished
:run
rem be sure to kill previous (closed) openvpn process so reconnecting actually works!
taskkill.exe /F /IM openvpn.exe
taskkill.exe /F /IM openvpn-gui.exe
timeout 1
start /b "" "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect nas_at_home.ovpn
:finished
В дополнение к ответу Flowerking вы можете указать папку, в которой находится ваш файл ovpn, возможно, для хранения данных закрытого ключа в пространстве пользователя. Для этого используйте config_dir
:
openvpn-gui.exe --connect "client.ovpn" --config_dir "C:\Users\Foo\Documents\protected_crypto_data"
Вот простой пример, если вы хотите подключиться к большему количеству VPN, чем один:
"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --connect vpn1.ovpn --connect vpn2.ovpn
Это не будет работать, если openvpn-gui.exe
запущен.
Вы можете улучшить ответ @Jan, изменив:
ping -n 1 192.168.10.100 > testping.txt
findstr /r /c:"Reply from \d*.\d*.\d*.\d*.* bytes=\d*.*time[<=]\d*.* TTL=\d*" testping.txt
чтобы:
ping 192.168.10.100 -n 1 | findstr /r /c:"Reply from \d*.\d*.\d*.\d*.* bytes=\d*.*time[<=]\d*.* TTL=\d*" && goto :finished
Таким образом, вам не нужно создавать временный файл.