I want to check whether I am connected to a Cisco VPN in a batch script. What I am currently trying is this:
.\vpnclient.exe | Findstr 'Connected'
This does kind of work: Calling vpnclient.exe opens Cisco's cli tool, then the Findstr command runs correctly. What I cannot get to work is: How do I then programmatically exit that tool and proceed? I can then manually exit the tool, but that is not really the idea of automation.
I have tried simply putting exit in the the next line, or echo exit | vpnclient.exe | Findstr 'Connected', .\vpnclient.exe | Findstr 'Connected' | exit, exit | .\vpnclient.exe | Findstr 'Connected'.
None of those exited the tool, the execution of the script simply halts. Sometimes, I can't even exit it manually anymore and have to open a new window.
Other questions on stackoverflow did not help, no one there seems to try to then programmatically exit and proceed.
How can I either programmatically exit Cisco's cli tool or check the connection status in another way, so I can proceed execution depending on the connection status?
Edit: (echo Y|vpnclient.exe) | Findstr "Connected" takes me into the cli tool, but I still have to exit it manually via ctrl + c, which is non-usable. I feel like Cisco's tool has some weird behavior here, or am I wrong about this?
The sites and threads I had previously found all recommended simply calling
.\vpnclient.exeto get the connection status. This leads to the behavior described in the question.Turns out, the VPN client has a command called
status, which does exactly what one would expect. So, what works is:Simple as that. Why this is not recommended (or well-documented) more often I do not know.