serg123456 |
14-12-2023 08:06 3021512 |
Ping с условием и выводом в файл
Доброго дня, помогите написать скрипт, который бы пинговал список адресов с привязанным именем, например ping 192.168.1.15 (Мария) Если Мария онлайн вывести в файл строку типа "14.12.2023 11.05 Мария онлайн"
|
Что-нибудь типа такого:
Код:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
For /F "Tokens=1,* Delims= " %%a In ('type "%~dp0list.txt"') Do (
ping -n 2 %%a | find /i "TTL=" 2>nul >nul
If !errorlevel! EQU 1 (echo.%%a %%b offline.) else (echo.%%a %%b online.)
)
Файл "list.txt", например:
Код:
192.168.1.2 (Сервер 2)
192.168.1.3 (Сервер 3)
192.168.1.22 (Сервер 22)
192.168.1.5 (Сервер 5)
|
Вариант на powershell:
Код:
param (
$date = "{0:dd.MM.yyyy_HH.mm.ss}" -f (get-date), #текущая дата
$file = "Patch to\fileping.txt", #список адресов
$only = "Patch to\online.txt" #кто онлайн
)
ForEach ($i in (Get-Content $file -Encoding utf8)) {
$ip,$is = ($i).Split(" ")
$im = $is -replace '\(|\)'
ping -n 1 -w 10 $ip > $null
if($LASTEXITCODE -eq 0) {
Add-Content $only -Encoding utf8 -Value $date' '$im' онлайн'
}
}
|
Упс, про дату и время не увидел, исправляюсь:
Код:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
For /F "Tokens=1,* Delims= " %%a In ('type "%~dp0list.txt"') Do (
call :getdatetime
ping -n 2 %%a | find /i "TTL=" 2>nul >nul
If !errorlevel! EQU 0 (echo.!datetime! %%a %%b online.) else (echo.!datetime! %%a %%b offline.)
)
GoTo :EOF
:getdatetime
set datetime=%date:~-10%-%time:~0,2%.%time:~3,2%.%time:~6,2%
|
Кстати, в последнее время возросла тенденция на использование ИИ. Задал ему вопрос топикстартера, слово в слово, ответ выдал скриптом на python:
Код:
import os
import datetime
addresses = {
"192.168.1.15": "Мария",
"192.168.1.16": "Иван",
"192.168.1.17": "Елена"
}
current_date = datetime.datetime.now().strftime("%d.%m.%Y %H:%M")
with open("ping_log.txt", "a") as file:
for address, name in addresses.items():
response = os.system("ping -n 1 " + address)
if response == 0:
file.write(f"{current_date} {name} онлайн\n")
else:
file.write(f"{current_date} {name} офлайн\n")
|
Время: 14:29.
© OSzone.net 2001-