Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Ping с условием и выводом в файл (http://forum.oszone.net/showthread.php?t=354682)

serg123456 14-12-2023 08:06 3021512

Ping с условием и выводом в файл
 
Доброго дня, помогите написать скрипт, который бы пинговал список адресов с привязанным именем, например ping 192.168.1.15 (Мария) Если Мария онлайн вывести в файл строку типа "14.12.2023 11.05 Мария онлайн"

NickM 14-12-2023 08:38 3021514

Что-нибудь типа такого:
Код:

@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)


Uragan66 16-12-2023 12:21 3021587

Вариант на 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' онлайн'
}
}


NickM 16-12-2023 14:46 3021591

Упс, про дату и время не увидел, исправляюсь:
Код:

@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%


Uragan66 20-12-2023 09:57 3021755

Кстати, в последнее время возросла тенденция на использование ИИ. Задал ему вопрос топикстартера, слово в слово, ответ выдал скриптом на 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.

Время: 14:29.
© OSzone.net 2001-