Исправление 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 сколькоСтрокВыбрать имяФайла
.