Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: ping скрипт help  (Прочитано 6647 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн avkutyrev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
  • Kubuntu 13.10
    • Просмотр профиля
ping скрипт help
« : 30 Марта 2011, 18:29:05 »
имеется скрипт
#! /bin/bash
IP=$1
while true
do
ping -c 1 $IP > $IP.tmp
i=`cat $IP.tmp | grep % |awk '{print $6 }' | awk 'BEGIN {FS = "%"} {print $1}'`

if [ $i != 0 ]
then (date | awk '{print $4}' ; sed -n -e '/\%/p' -e '1p' $IP.tmp) >> $HOME/Документы/iplogs/$IP.log

fi
rm $IP.tmp
sleep 1
done


ping.sh
Собственно скрипт на бесконечный пинг с логом в случае потерь.
Что не могу понять это помечу при отсутвии пинга он логирует не каждую секунду, а  с разными интервалами
Пример:
(Нажмите, чтобы показать/скрыть)
что-то мне подсказывает что вся загвоздка в while true условии, но если его убрать то в системе начнут плодиться процессы ping.sh
« Последнее редактирование: 31 Марта 2011, 17:14:25 от Leopold »
CCNP R&S
CCNA Security

Оффлайн Disaster1986

  • Участник
  • *
  • Сообщений: 246
  • Что делает эта кнопка?
    • Просмотр профиля
Re: ping скрипт help
« Ответ #1 : 30 Марта 2011, 18:57:14 »
как мне кажется, сама команда ping выполняется несколько секунд, оттуда и задержки. зачем вообще пинговать так часто?

Оффлайн avkutyrev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
  • Kubuntu 13.10
    • Просмотр профиля
Re: ping скрипт help
« Ответ #2 : 30 Марта 2011, 19:02:16 »
IP переменная которую задается  вместе с командой в строке
IP=ip_adress ping.shпотом переделаю чтобы можно было вводить просто
ping.sh ip_adressтам делов то добавить строку IP=$1 , но дело не в этом сейчас. сам по себе скрипт работает меня волнует  интервал логирования и почему так происходит
CCNP R&S
CCNA Security

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: ping скрипт help
« Ответ #3 : 30 Марта 2011, 19:03:23 »
так ping не сразу констатирует факт потери пакета
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн avkutyrev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
  • Kubuntu 13.10
    • Просмотр профиля
Re: ping скрипт help
« Ответ #4 : 30 Марта 2011, 19:03:46 »
как мне кажется, сама команда ping выполняется несколько секунд, оттуда и задержки. зачем вообще пинговать так часто?
отправка одного пакета около секунды происходит, так часто чтобы  логировалось время  отвала с точностью до секунды

Пользователь решил продолжить мысль 30 Марта 2011, 19:05:31:
так ping не сразу констатирует факт потери пакета
параметр -W 1 вообще смазывает всю картину и частенько даже при нормальном пинге логирует потерю пакетов... хотя в таком случае скрипт работает так как мне надо


Пользователь решил продолжить мысль 31 Марта 2011, 11:18:39:
не уже ли ни у кого нет никаких соображений по данной теме?
« Последнее редактирование: 31 Марта 2011, 11:18:39 от Leopold »
CCNP R&S
CCNA Security

Оффлайн avkutyrev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
  • Kubuntu 13.10
    • Просмотр профиля
Re: ping скрипт help
« Ответ #5 : 04 Апреля 2011, 11:02:18 »
РЕШЕНО
Все оказалось очень просто.
#! /bin/bash
# Считываем ip адрес непосредственно из командной строки. Пример ввода ping.sh 192.168.0.1
IP=$1
# Символ : в команде while обеспечивает бесконечное выполнение  цикла
while :
do
ping -c 1 -W 1 $IP > $IP.tmp
i=`cat $IP.tmp | grep % |awk '{print $6 }' | awk 'BEGIN {FS = "%"} {print $1}'`

if [ $i != 0 ]
then (date | awk '{print $4}' ; sed -n -e '/\%/p' -e '1p' $IP.tmp) >> $HOME/Документы/iplogs/$IP.log

fi
rm $IP.tmp
done
Все решилось символом null в  крманде while и удалось избавиться от строчки перезапускающей весь скрипт полностью, что иногда выливалось в спам системы :D...
Славься "Linux и Unix: програмирование в Shell. Руководство разработчика.  Д. Тейнсли 2001" велкий и могучий

Пользователь решил продолжить мысль 05 Апреля 2011, 08:45:23:
Выкладываю мб кому и прогодится, скрипт пинга записывающий лог каждую секунду в файл. формат ввода команды pign.sh HOSTNAME
ping.sh 8.8.8.8Собственно сам скрипт
#! /bin/bash
IP=$1

# проверяем есть ли в папке  файла с таким же IP
 if [ -s $HOME/Документы/iplogs/$IP.log ]; then
# если есть то переименовываем имеющийся файл
# вычисляем номер последнего файла  с таким же IP
 NUMBER=`ls $HOME/Документы/iplogs/ | grep "$IP\_[0-9]\{3\}.log" | awk -F_ '{print substr($2,1,3)}' | sed -n '$p'`
# присваиваем следующий по счету номер параметру отвечающему за номер копии
NUMBER=`expr $NUMBER + 1`
# перемеименуем старый файл с присвоением ему следующего порядкового номера
if [ "$NUMBER" -gt 99 ]; then
 mv $HOME/Документы/iplogs/$IP.log $HOME/Документы/iplogs/$IP\_$NUMBER.log
elif [ "$NUMBER" -lt 100 ] && [ "$NUMBER" -gt 9 ]; then
mv $HOME/Документы/iplogs/$IP.log $HOME/Документы/iplogs/$IP\_0$NUMBER.log
else mv $HOME/Документы/iplogs/$IP.log $HOME/Документы/iplogs/$IP\_00$NUMBER.log
fi
fi
# собственно сам скрипт пинга
# Оператор :  позволяет бесконечно выполнять цикл
while :
do
ping -c 1 -W 1 $IP > $IP.tmp
i=`cat $IP.tmp | grep % | awk '{print $6 }' | awk 'BEGIN {FS = "%"} {print $1}'`

if [ $i != 0 ]
then (date | awk '{print $4}' ; sed -n -e '/\%/p' -e '1p' $IP.tmp) >> $HOME/Документы/iplogs/$IP.log

fi
rm $IP.tmp

done
Так же прилагается скрипт подсчета потеряных пакетов в  логе пинга с зависью результата в  файл
#! /bin/bash
# Скрипт подсчитывает общее количество потеряных пакетов логфайла выданого скриптом ping.sh и записывает результат в него же.
cat $HOME/Документы/iplogs/$1.log  | grep % | awk '{tot+=$1}; END {print "=======\nИтого потеряно "tot" пакетов"}' >> $HOME/Документы/iplogs/$1.log
P.S.: скрипт ping.sh предполагался как скрипт для запуска в фоне, если вы хотите использовать его в консоли возможно вам будет удобнее если заменить оператор цикла на until break в этом случае при желании можно так же добавить в лог время начала и время конца выполнения скрипта.
« Последнее редактирование: 05 Апреля 2011, 08:45:23 от Leopold »
CCNP R&S
CCNA Security

Оффлайн avkutyrev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 30
  • Kubuntu 13.10
    • Просмотр профиля
Re: ping скрипт help
« Ответ #6 : 07 Июня 2011, 14:43:38 »
Допилил вариант выше. теперь суммирование потеряных пакетов происходит автоматически по прерывнию работы скрипта
#! /bin/bash
IP=$1
trap "my_exit" 1 2 3 15

my_exit()
{
rm $IP.tmp 2> /dev/null
cat $HOME/Документы/iplogs/$IP.log  | grep % | awk '{tot+=$1}; END {print "=======\nИтого потеряно "tot" пакетов"}' >> $HOME/Документы/iplogs/$IP.log
echo -e "\n Пинг для хоста $IP завершен"

exit 1
}

# проверяем есть ли в папке  файла с таким же IP
 if [ -s $HOME/Документы/iplogs/$IP.log ]; then
# вычисляем номер последнего файла  с таким же IP
 NUMBER=`ls $HOME/Документы/iplogs/ | grep "$IP\_[0-9]\{3\}.log" | awk -F_ '{print substr($2,1,3)}' | sed -n '$p'`
# присваиваем следующий по счету номер параметру отвечающему за номер копии
        NUMBER=`expr $NUMBER + 1`
# перемеименуем старый файл с присвоением ему следующего порядкового номера
        if [ "$NUMBER" -gt 99 ]; then
 mv $HOME/Документы/iplogs/$IP.log $HOME/Документы/iplogs/$IP\_$NUMBER.log
                elif [ "$NUMBER" -lt 100 ] && [ "$NUMBER" -gt 9 ]; then
                mv $HOME/Документы/iplogs/$IP.log $HOME/Документы/iplogs/$IP\_0$NUMBER.log
                        else mv $HOME/Документы/iplogs/$IP.log $HOME/Документы/iplogs/$IP\_00$NUMBER.log
        fi
fi
# Оператор :  позволяет бесконечно выполнять цикл
while :
do
ping -c 1 -W 1 $IP > $IP.tmp
i=`cat $IP.tmp | grep % |awk '{print $6 }' | awk 'BEGIN {FS = "%"} {print $1}'`

        if [ $i != 0 ]
         then (date | awk '{print $4}' ; sed -n -e '/\%/p' -e '1p' $IP.tmp) >> $HOME/Документы/iplogs/$IP.log

        fi
rm $IP.tmp

done
CCNP R&S
CCNA Security

Оффлайн viktor6

  • Любитель
  • *
  • Сообщений: 55
    • Просмотр профиля
Re: ping скрипт help
« Ответ #7 : 27 Апреля 2012, 09:34:28 »
Уважаемые гуру нужен скрипт который бы проверял есть в сети IP если нет то отправлялось сообщения в аську а еще луче смс
Еще раз прошу прощения но очень нужно

 

Страница сгенерирована за 0.038 секунд. Запросов: 25.