Is it possible to start a windows openvpn client to make it connect using a predefined config (.ovpn) by supplying program arguments using command prompt. Or specifying the arguments in the shortcut when opening from windows shortcut etc.
Mind you that if the
openvpn-gui.exe is already started above answers won't work. Pay attention to the :run section from a little batch file I made to automatically start openVPN connection when not at home:
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
I had the same problems, and also needed the script to not re-open the UI if it was already connected, and to wait for the connection to finish.
I couldn't find a good solution, so I wrote my own. It is here in case it is useful to others:
Windows Vista and above; free; includes C++ source code.
(There's also a similar, older tool there for the Windows built-in VPN client.)
Example usage, with the /verbose switch that outputs detailed info about what it is doing:
C:\> ConnectOpenVPN.exe /connect /adapter "OpenVPN" /config "MyVPN.ovpn" ConnectOpenVPN: Checking state of "OpenVPN" network adapter... ConnectOpenVPN: "OpenVPN" network adapter is not connected. ConnectOpenVPN: Running: "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command connect "MyVPN.ovpn" ConnectOpenVPN: Waiting for OpenVPN GUI to appear... ConnectOpenVPN: OpenVPN GUI found. ConnectOpenVPN: Waiting for OpenVPN GUI to close... ConnectOpenVPN: OpenVPN GUI closed. ConnectOpenVPN: Waiting for/confirming VPN connection exists... ConnectOpenVPN: Connected. ConnectOpenVPN: CONNECT action finshed.
I hope it is useful to other people.
You can improve @Jan 's answer by changing:
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
This way you don't need to create a temporary file.