1
我想創建一個批處理,Powershell(Win8.1)或Python(3.4)的腳本。腳本會每隔15分鐘循環一次,以測試互聯網連接是否還活着。如果連接處於活動狀態,那麼腳本將打印帶時間戳的Pass並保存到日誌文件中。如果互聯網連接失效或丟失,則腳本將禁用並重新啓用網絡適配器,同時記錄時間和測試結果。我想我已經縮小了一個非常穩定的批處理文件。如何啓用和禁用網絡連接時,連接到interntet被放棄,而一切都記錄?
我遇到的問題是,當我使用允許powershell命令執行的Admin權限運行腳本時,日誌文件不會更新。當我運行無Admin權限的批處理文件時,日誌文件會更新,但PowerShell命令不起作用。
我也曾嘗試用命令行代碼同樣的腳本到位的PowerShell命令的我只覺得PowerShell是速度快:
netsh interface set interface "Ethernet" DISABLED
netsh interface set interface "Ethernet" ENABLED
到目前爲止我的代碼:
@setlocal enableextensions enabledelayedexpansion
@echo off
rem Google DNS Most reliable IP for ping testing.
set ip=8.8.8.8
:retest
cls
echo.
echo %TIME%: Testing Internet Connection...
ping -n 1 %ip% | find "TTL"
if not errorlevel 1 set error=Pass
if errorlevel 1 set error=Fail
echo.
echo Time: %TIME% Result: %error%
echo Time: %TIME% Result: %error% >> Server_Restarts.log
echo.
goto %error%
:Pass
echo Retest in 15 minutes..
timeout /T 900 /NOBREAK
goto retest
:Fail
echo Restarting Network..
echo Connection Failed at %TIME%.. >> Server_Restarts.log
timeout /t 5 /nobreak
echo. >> Server_Restarts.log
echo.
echo Restarting Network at Date: %DATE% and Time:%TIME%..
echo Restarting Network at Date: %DATE% and Time:%TIME%.. >> Server_Restarts.log
echo %TIME% Disabling Network Connection..
Powershell.exe Disable-NetAdapter -Name * -Confirm:$false
echo %TIME% Enabling Network Connection..
Powershell.exe Enable-NetAdapter -Name "Ethernet"
echo Network Connection Reset at %TIME%..
echo Network Connection Reset at Date: %DATE% and Time:%TIME%.. >> Server_Restarts.log
echo. >> Server_Restarts.log
timeout /t 5 /nobreak
goto retest
你怎麼知道它不寫入你的文件?您正在使用相對路徑,因此位置可能會有所不同。如果你正確的點擊並使用「以管理員身份運行」,它會將文件保存在'c:\ windows \ system32 \ Server_Restarts.log'中。 –
哦,不,你說得很對,現在我覺得很愚蠢。 :(我不知道爲什麼我沒有想到這一點,你是一個拯救生命的人。 – Haxslie
:)添加爲答案 –