LINUX.ORG.RU

История изменений

Исправление alozovskoy, (текущая версия) :

Давай немного улучшим твой скрипт.

* i можно читать сразу из результатов выполнения пинга, текстовый файл не нужен:

* i можно сравнивать и без удаления символа «%»

* Три переменных для указания даты\времени тебе не нужны, можно использовать подстановки.

* Зачем тебе стопятьсот файлов отчетов по каждому хосту? Ты все равно подставляешь ip в файл, можно все хранить в одном.

* Ты говоришь у тебя 5 ip, так и пробегай их циклом, а то ты сейчас 5 скриптов сделаешь.

С учетом вышесказанного:

#!/bin/bash
mkdir ./scriptlogs
ip="192.168.1.1 192.168.1.2 192.168.1.3"
while :
  do
    for item in $ip
      do
        i=$(ping -c 100 $ip | grep % | awk '{print $6 }')

        if [ "$i" != "0%" ]
          then
            beep -f 900 -l 1000
            echo "$(date +%H:%M:%S) $i ${ip}." >> ./scriptlogs/$(date +%Y.%m.%d).log
        fi
      done
    sleep 5
    done

Теперь про чтение из файла - определись с периодом который тебе нужен, и самый просто вариант будет просто брать какое-то количество последних строк из файла. Это можно сделать при помощи tail -n сколькоСтрокВыбрать имяФайла.

Исходная версия alozovskoy, :

Давай немного улучшим твой скрипт.

* i можно читать сразу из результатов выполнения пинга, тестовый файл не нужен:

* i можно сравнивать и без удаления символа «%»

* Три переменных для указания даты\времени тебе не нужны, можно использовать подстановки.

* Зачем тебе стопятьсот файлов отчетов по каждому хосту? Ты все равно подставляешь ip в файл, можно все хранить в одном.

С учетом вышесказанного:

#!/bin/bash
mkdir ./scriptlogs
ip="192.168.1.1 192.168.1.2 192.168.1.3"
while :
  do
    for item in $ip
      do
        i=$(ping -c 100 $ip | grep % | awk '{print $6 }')

        if [ "$i" != "0%" ]
          then
            beep -f 900 -l 1000
            echo "$(date +%H:%M:%S) $i ${ip}." >> ./scriptlogs/$(date +%Y.%m.%d).log
        fi
      done
    sleep 5
    done

Теперь про чтение из файла - определись с периодом который тебе нужен, и самый просто вариант будет просто брать какое-то количество последних строк из файла. Это можно сделать при помощи tail -n сколькоСтрокВыбрать имяФайла.