批处理文件以检查vpn连接处于在线/启动状态

时间:2019-02-18 22:34:27

标签: batch-file connection vpn errorlevel

我需要使用批处理文件在线/启动时检查vpn连接。

实际上我使用此代码:

PING -n 5 www.google.com|FIND /I "TTL">NUL

IF NOT "%ERRORLEVEL%"=="1" (
Echo "Vpn Connection Is Up"
)
IF "%ERRORLEVEL%"=="1" (
Echo "Vpn Connection Is Down"
)

有时候ping会给出无响应或给出一般的失败响应。

我想知道有比ping命令更好的批处理代码。

我尝试了这种备用代码,但是在联机/启动时无法识别vpn,因为适配器始终安装在我的PC中。

第一个备用代码:

ipconfig|find /i "VPN" && GOTO startAPP || GOTO connectVPN

第二个备用代码:

ipconfig|find /i "VPN"

if %errorlevle%==1 goto:connectVPN

echo Starting APP !
exit/b

:connectVPN
echo connecting to VPN

第三种备用代码:

:start
cls
rasdial | find /I "%vpnname%" > nul
if errorlevel 1 goto vpndown
if errorlevel 0 goto vpnup

您能建议将ping的替代命令集成到我的批处理代码中吗?

vpn连接在线时,备用代码无法识别,它可以识别我的电脑中是否安装了适配器,但是我需要知道vpn何时在线/启动(准备上网)。

3 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是使用netsh wlan show networks。此命令将显示您当前连接的网络适配器。我们可以使用find /I "VPN"查看您的 VPN 当前已连接。 %ERRORLEVEL%将允许您提取是/否。

Is-VPN-Up.Bat:

netsh wlan show networks | FIND "VPN" /I /C >NUL
IF Not "%ERRORLEVEL%"=="1" (
    Echo "Vpn Connection Is Up"
) ELSE (
    Echo "Vpn Connection Is Down"
)

答案 1 :(得分:0)

我认为,如果将Powershell合并到批处理中(或单独使用Powershell),则可以查看连接是否建立。

$array->fund

您也可以先对google进行ping操作,然后如果发现问题,对网关执行ping操作,如果有问题,请检查连接,几乎就像这样:

@echo off
for /f "tokens=2" %%i in ('powershell "Get-NetAdapter | select Name,Status" ^| findstr /i "Wifi"') do (
   if /i "%%i"=="up" echo VPN %%i
   if /i "%%i"=="down" echo VPN %%i
)

答案 2 :(得分:0)

另一种方法是使用rasdial命令,该命令用于VPN连接。特别是,使用:

@echo off

rasdial | findstr /ic:"No" >nul
if not %errorlevel% EQU 0 (
    echo Found a VPN connection!
    goto :found
) else (
    echo We didn't find any VPN connections!
    goto :notfound
)

:found
rem Do something if a VPN connection is found/online:

:notfound
rem Do something if a VPN connection isn't found/online: