Подскажите, пожалуйста, простенькую бесплатную (в идеале GNU) программу под винду по мониторингу подключения к и-нету: чтоб кинуть в автозагрузку и она бы пинговала провайдера или 8.8.8.8, или ещё как-то проверяла наличие и-нета, писала логи когда и-нет пропадает и появляется.
Скрипт на питоне?
import subprocess
import time
def check_internet(host="8.8.8.8", log_file="internet_log.txt"):
while True:
response = subprocess.run(['ping', '-c', '1', host], stdout=subprocess.PIPE).returncode
if response != 0:
with open(log_file, "a") as log:
message = f"Internet connection lost at {time.strftime('%Y-%m-%d %H:%M:%S')}\n"
log.write(message)
print(message)
else:
print(f"Подключение к {host} присутствует")
time.sleep(60) # Проверка каждую минуту
if __name__ == "__main__":
check_internet()
import time
def check_internet(host="8.8.8.8", log_file="internet_log.txt"):
while True:
response = subprocess.run(['ping', '-c', '1', host], stdout=subprocess.PIPE).returncode
if response != 0:
with open(log_file, "a") as log:
message = f"Internet connection lost at {time.strftime('%Y-%m-%d %H:%M:%S')}\n"
log.write(message)
print(message)
else:
print(f"Подключение к {host} присутствует")
time.sleep(60) # Проверка каждую минуту
if __name__ == "__main__":
check_internet()
"Glasswire" может какой-нибудь.
Нихрена себе, простенькая.
Завернуть ping в бесконечный цикл со слипом и добавить батник в автозагрузку
а как копаться в мегабайтах логов за каждый день?
я не нашел команды которая бы для пинга показывала только начало и конец обрывов
я не нашел команды которая бы для пинга показывала только начало и конец обрывов
парсер логов еще написать :)
https://stackoverflow.com/a/3050945
А если писать в файлег "1" - есть интернеты, "0" - нет интернеты и добавить в условие чтобы проверяло файлек?
потом будешь звонить что не бьіло разрьіва?
у нас прога после обновления вылетает с кучей ошибок, если пропадает и-нет на секунду, и её можно закрыть только через диспетчер задач, а сотня человек персонала едва ли научена мышкой клацать по кнопке "ОК" и вызвать диспетчер задач - это уже что-то типа хакерства (медицина).
А просто сделать батник с "taskkill /IM %имя_процесса%.exe /F" не легче будет?
Писать только неудачные попытки? Или если повторно неудача, написать интервал неудач...
Тогда точно питон может пингануть и перезапустить, когда интернет заработает
Я на одной из прошлых работ юзал Algorius Net Viewer. Он конечно платный, но если совесть позволяет то ломанный доступен. Там можно карту сети поднять с пропинговкой отдельных устройств
не надо карт, надо один адрес проверять - есть ли и-нет, или нету, и аккуратно записать в лог: и-нет пропал тогда-то, появился тогда-то. не нужно всяких снифферов сети, карт и т.д.
Friendly Pinger
Пользуйся штатными инструментами. Настрой журнал сетевой активности.
PingoMeter
Ping Graphics
Может я не совсем понял тз, но если под винду - у нее своих скриптовых инструментов достаточно, пайтон избыточен имхо.
Вот повершелл -
$logFilePath = "C:\path\to\log.txt"
while ($true) {
$pingResult = Test-Connection -ComputerName "google.com" -Count 1 -ErrorAction SilentlyContinue
if ($pingResult -eq $null) {
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Add-Content -Path $logFilePath -Value "[$timestamp] Connect error"
}
Start-Sleep -Seconds 5
}
Вот батник если совсем просто -
@echo off
set LOG_FILE=C:\path\to\log.txt
:LOOP
ping google.com -n 1 | find "TTL=" > nul
if errorlevel 1 (
echo [%date% %time%] Connect error >> %LOG_FILE%
)
timeout /nobreak /t 5 > nul
goto LOOP
Пинг раз в 5 секунд, что бы не флудить.
Вот повершелл -
$logFilePath = "C:\path\to\log.txt"
while ($true) {
$pingResult = Test-Connection -ComputerName "google.com" -Count 1 -ErrorAction SilentlyContinue
if ($pingResult -eq $null) {
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Add-Content -Path $logFilePath -Value "[$timestamp] Connect error"
}
Start-Sleep -Seconds 5
}
Вот батник если совсем просто -
@echo off
set LOG_FILE=C:\path\to\log.txt
:LOOP
ping google.com -n 1 | find "TTL=" > nul
if errorlevel 1 (
echo [%date% %time%] Connect error >> %LOG_FILE%
)
timeout /nobreak /t 5 > nul
goto LOOP
Пинг раз в 5 секунд, что бы не флудить.
Чтобы написать коммент, необходимо залогиниться