Wi-Fi 감시 배치 파일 또는 유틸리티?

Wi-Fi 감시 배치 파일 또는 유틸리티?

나는 모니터링을 위해 원격으로 액세스하는 Wi-Fi에서 오래된 Windows 7 시스템을 실행하고 있습니다.

문제는 Wi-Fi가 예측할 수 없으며(이상한 라우터 문제로 인해) 하루 중 언제든지 이 시스템이 온라인 상태가 되어야 한다는 것입니다. 이상하게도 Wi-Fi가 끊어지면 여전히 사용 가능하고 Windows가 다시 연결되도록 설정되어 있어도 자동으로 다시 연결되지 않는 경향이 있습니다.

여기에서 답변이 포함된 비슷한 질문을 찾았지만 이는 유선 네트워크용이었고 안타깝게도 솔루션이 내 시스템에서 작동하지 않습니다.

아래와 같이 생성된 배치파일입니다. 나는 그것을 실행하고 핑을 중지한 Wi-Fi 라우터를 종료했지만 인터페이스를 재설정하기 위한 if 문을 완료하지 못했습니다. 명령 창에는 ping 시간 초과가 표시되고 연결이 다시 설정될 때까지 계속 반복됩니다. 로그 파일은 오류를 기록하지 않으므로 if 문의 오류 부분에 도달하지 않습니다. 원래 "인터페이스" 변수를 "로컬 영역 연결"에서 "무선 네트워크 연결"로 변경했습니다.

누구든지 이 문제를 해결하거나 네트워크가 중단될 때 어댑터를 자동으로 재설정하는 대체 옵션을 제안할 수 있습니까? 인터페이스로 "무선 네트워크 연결(%SSID%)"을 추가해야 합니까?

감사해요!

판테라테아마

@echo off
set INTERFACE="Local Area Connection"
set TIMEOUT=3600
set IP=8.8.8.8
set LOG="watchdog.log"

echo %DATE% %TIME%: Watchdog started >> %LOG%

:loop
rem First check the interface for an hour by pinging the Google DNS
rem and resetting the networking interface if it should fail.
ping -n %TIMEOUT% -w 1000 -l 0 %IP%
if %errorlevel% NEQ 1 goto :loop
echo %DATE% %TIME%: Connection failed. Restarting interface.. >> %LOG%
netsh interface set interface %INTERFACE% disable
netsh interface set interface %INTERFACE% enable

rem Give it another shot but restart the whole computer if it the 
communication should still fail
ping -n %TIMEOUT% -w 1000 -l 0 %IP%
if %errorlevel% NEQ 1 goto :loop
echo %DATE% %TIME%: Still no connection. Restarting computer.. >> %LOG%
shutdown /r /c "Internet wathchdog"

echo %DATE% %TIME%: Waiting for system to shut down >> %LOG%
choice /T %TIMEOUT% /D Y /N > NUL
echo %DATE% %TIME%: Gave up on the shut down attempt. Trying again.. >> 
%LOG%
goto :loop

답변1

TIMEOUT을 30으로 변경합니다. 연결이 30초 동안 중단되면 재설정을 수행하도록 지시합니다. 그렇지 않으면 3600초(1시간) 동안 작동이 중지되어야 합니다.

또한 이 목적으로 8.8.8.8을 사용해서는 안 됩니다. 대신 에서 찾은 게이트웨이 IP 주소를 사용해야 합니다 ipconfig. 8.8.8.8과 같은 외부 IP를 사용하는 경우 컴퓨터는 연결을 재설정하고 인터넷과 같은 것이 단순히 다운되면 컴퓨터를 계속 재부팅합니다.

게이트웨이 주소와 같은 내부 IP를 사용하면 Wi-Fi 연결이 실제로 끊어진 경우에만 재설정되거나 재부팅됩니다.

nt authority\system또한 이 작업을 예약된 작업으로 실행하여 컴퓨터 시작 시 와 같이 가장 높은 권한으로 실행할 수도 있습니다 . 그러나 네트워크 스택이 완전히 작동하기 전에 스크립트가 실행될 수 있으므로 제한 시간을 300초와 같이 조금 더 길게 변경하겠습니다.

편집: 의견에 명시된 바와 같이 질문에 게시된 스크립트는 작동하지 않습니다. 원본 스크립트의 문제점은 ping 명령이 "xxx.xxx.xxx.xxx의 응답: 대상 호스트에 연결할 수 없음"을 반환하여 "성공" 오류 수준이 발생할 수 있다는 것입니다.

다음은 작동이 중단된 연결을 보다 효과적으로 감지할 수 있도록 논리를 변경하는 업데이트된 스크립트입니다. 또한 컴퓨터를 재부팅하는 부분도 제거했습니다. 불필요하고 잠재적으로 문제가 있을 수 있다고 생각합니다. 이 명령이 실행 중일 때 화면에는 출력이 없습니다. 명령 을 사용하여 적절한 네트워크 인터페이스 이름을 얻었는지 확인하십시오 netsh interface show interface.

@echo off
REM Modified by Appleoddity - 10/11/2017
REM Fixed ping status check; Removed shutdown/reboot ability; Improved logging
REM This script MUST RUN AS ADMIN
REM
REM Obtain network interface name with 'netsh interface show interface'
REM 
REM Change the INTERFACE; THRESHOLD; IP; and LOG variables below.
REM Note: THRESHOLD is not necessarily the number of seconds before reset - but close
REM
setlocal EnableDelayedExpansion
set INTERFACE="Wi-Fi"
set THRESHOLD=30
set IP=10.1.10.1
set LOG="watchdog.log"

echo %DATE% %TIME%: Watchdog started >> %LOG%

SET /A COUNT=0
REM Loop until <THRESHOLD> failed, consecutive pings are counted
:LOOP
ping -n 1 -w 1000 -l 0 %IP% | find /i " bytes=" >NUL 2>&1
if errorlevel 1 (
    set /A COUNT+=1
    echo %DATE% %TIME%: Failed ping detected - Count = !COUNT!. >> %LOG%
) ELSE (
    set /A COUNT=0
    REM Pause
    ping -n 2 -w 1000 -l 0 127.0.0.1 >NUL 2>&1
)
if %COUNT% GEQ %THRESHOLD%  (
    echo %DATE% %TIME%: %THRESHOLD% failed pings exceeded. >> %LOG%
    GOTO RESET
)
GOTO LOOP

REM Reset the network interface
:RESET
echo %DATE% %TIME%: Restarting network interface - %INTERFACE% >> %LOG%
netsh interface set interface "%INTERFACE%" admin=DISABLED >NUL 2>&1
netsh interface set interface "%INTERFACE%" admin=ENABLED >NUL 2>&1
SET /A COUNT=0
GOTO LOOP

답변2

당신이 얻고 있다면"해당 이름의 인터페이스가 라우터에 등록되어 있지 않습니다."오류가 발생하면 스크립트에서 올바른 네트워크 어댑터를 선택하지 않았음을 의미합니다.

배치/명령을 관리자로 실행하고 있습니까?

관리자 권한이 있는지 확인하려면 다음을 실행할 수 있습니다.ncpa.cpl또는

netsh interface show interface

그러면 어댑터 목록이 제공되고 어댑터 이름을 기반으로 다음과 같이 작성됩니다.

netsh interface set interface name="Local area connection" admin="disabled"
netsh interface set interface name="Wireless Network Connection" admin="disabled"
netsh interface set interface name="Local area connection" admin="enabled"
netsh interface set interface name="Wireless Network Connection" admin="enabled"

그러면 필요한 어댑터가 재설정되고 &를 사용하여 모두 함께 연결할 수 있습니다.

netsh interface set interface name="Local area connection" admin="disabled" & netsh interface set interface name="Local area connection" admin="enabled"

관련 정보