The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Скрипт для наглядного ping с ведени..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Скрипт для наглядного ping с ведени..."  +/
Сообщение от auto_tips (??) on 02-Июл-11, 11:09 
Представленный скрипт может:
* Отображать результат пинга
* Отображать время пинга
* Вести лог пингов
* Визуализировать лог пингов
* Подавать звуковой сигнал при отсутствии пинга

Код скрипта  conky.sh:

   #!/bin/bash

   #$1 - name
   #$2 - adress
   #$3 - options (f: format result, n: show name, t: show time, d: show colored dot, s: play sound, l: logging)
   #$4 - width in symbol
   #$5 - fill symbol
   #$6 - sound file
   #$7 - packetsize

   if [ "$7" != "" ]
   then
    tmp=-s' '$7
   fi
   a=$(ping -c 1 $2 -W 1 $tmp)
   if [ "$a" = "" ]
   then
    r='e'
    t=Ꝏ
   fi

   if [[ "$a" =~ [0-9]*% ]]; then tmp=$BASH_REMATCH; fi
   if [ "$tmp" = "0%" ]
   then
    r='y'
    if [[ "$a" =~ time=[0-9.]*.ms ]]; then t=$BASH_REMATCH; fi
    t=${t#time=}
    t=${t% ms}
   elif [ "$tmp" = "100%" ]
   then
    r='n'
    t=Ꝏ
   fi

   vislog=''
   #функция визуализации и ведения лога
   function vis_log
   {
   # Проверка наличия файла.
   if [ ! -f "$2" ]
   then
    #echo "Файл "$2" не найден. Создаем..."
    > $2
   fi
  
   #сколько строк лога нужно визуализировать?
   tmp=''
   if [[ "$3" =~ n ]]; then tmp=$1' '; fi
   if [[ "$3" =~ t ]]; then tmp=$tmp' '$t; fi
   if [[ "$3" =~ d ]]; then tmp=$tmp' '$r; fi
   cnt=${#tmp}
   let cnt=$4-$cnt
   #считать из лога нужное количество строк
   tmp=$(tail -n $cnt $2)
   #парсим считанные строки
   sym=''
   oldsym=''
   for ((i=1; i <= cnt ; i++))
   do
    if [[ "$tmp" =~ [eyn] ]]; then sym=$BASH_REMATCH; fi
    tmp=${tmp#*d}
    if [ "$sym" != "$oldsym" ]
    then
     case "$sym" in
      y) vislog=$vislog'${color green}';;
      n) vislog=$vislog'${color red}';;
      e) vislog=$vislog'${color yellow}';;
     esac
    fi
    oldsym=$sym
    vislog=$vislog$5
   done
  
   #записали новый результат пинга в лог
   echo "$r $t"$(date +%x' % '%X)' d' >> $2

   #типа ротация лога оставляем только последние $4 строк
   tail -n $4 $2 > temp.txt
   rm $2
   mv temp.txt $2
  
   }

   #сыграем звук если надо
   if [[ "$3" =~ s ]]; then
    if [ "$r" != 'y' ]
    then
     play $6 -q &
    fi;
   fi
  
   #окончательное оформление для conky
   res=''
   if [[ "$3" =~ l ]]; then vis_log $1 $2 $3 $4 $5; fi
   if [[ "$3" =~ n ]]; then res=$1' '; fi
   if [[ "$3" =~ f ]]; then res=$res' '$vislog; fi
   if [[ "$3" =~ t ]]; then res=$res'${color} '$t; fi
   r=${r//y/'${color 00ff00}'⬤}
   r=${r//n/'${color ff0000}'⬤}
   r=${r//e/'${color ffff00}'⬤}
   if [[ "$3" =~ d ]]; then res=$res' '$r; fi
   echo $res

В скрипт надо передать 7 параметров:

1- Отображаемое имя того, что пингуем (может не совпадать с адресом и вообще это просто строка от которой работа скрипта не зависит)

2- Пингуемый адрес (х.х.х.х либо example.com)

3- Флаги настроек:
  f - форматировать вывод (без флага ведения лога бессмысленно)
  n - отображать имя
  t - отображать время пинга (ms)
  d - отображать жирную точку текущего результата
  s - проиграть звук при отсутствии пинга
  l - вести лог

4- Общая ширина строки в символах для форматирования

5- Символ которым будет заполняться пространство для форматированного вывода, также цветом этого символа будет отображаться лог

6- Имя звукового файла (необязательный параметр нужен для флага s, почему то путь у меня не работал пришлось файл бросить в домашний каталог)

7- Длинна пакета для пинга (совсем не обязательный параметр, но очень просили)

Пример конфигурации conky:

   {execpi 10 /home/kinsoft/conky_ping5.sh Inet 8.8.8.8 fntdls 32 . drip.ogg}

отображать имя, время пинга, лог, текущий результат; играть звук; вести лог; форматировать строку и делать ее шириной 32 знака.


URL:
Обсуждается: http://www.opennet.dev/tips/info/2591.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Скрипт для наглядного ping с ведением лога"  +/
Сообщение от sanitar (??) on 02-Июл-11, 11:09 
Автор, сделай, пожалуйста, скриншот
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Скрипт для наглядного ping с ведением лога"  +/
Сообщение от Zl0 (ok) on 02-Июл-11, 21:47 
знаю скрипт покороче  mtr называется.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Скрипт для наглядного ping с ведением лога"  +/
Сообщение от Filosof email(ok) on 02-Июл-11, 23:57 
не факт, что короче, но доступней - точно.
однако он требует рутовых прав и не выполняет "из коробки" того, чего надо автору.
Так что это может и велосипед, но вполне функциональный, и свою нишу имеет.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Скрипт для наглядного ping с ведением лога"  +/
Сообщение от mike_t on 04-Июл-11, 13:25 
ping тоже рутовый
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Скрипт для наглядного ping с ведением лога"  +/
Сообщение от товарищ on 04-Июл-11, 14:28 
поддерживаю! очень хорошо было бы увидеть на что похож отчёт.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

6. "Скрипт для наглядного ping с ведением лога"  +1 +/
Сообщение от Zl0 (ok) on 05-Июл-11, 17:58 
> ping тоже рутовый

с каких пор?

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Скрипт для наглядного ping с ведением лога"  +/
Сообщение от Александр email(??) on 06-Июл-11, 19:20 
Если /usr/sbin/ping то это не значит, что его тока рут запускать может, а по поводу велосипеда: один кама другой урал, велики то разные, кому что удобнее.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Скрипт ля"  +/
Сообщение от Andrey Mitrofanov on 06-Июл-11, 19:30 
Гуглить ping suid и прочие raw socket-ы и капабилитисы.

...ping suid capabilities site:opennet.ru

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "Скрипт для наглядного ping с ведением лога"  +/
Сообщение от Paul Khusainov on 07-Июл-11, 11:16 
Ну и навесьте на mtr suid-бит.
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

10. "Скрипт для наглядного ping с ведением лога"  +/
Сообщение от Аноним (??) on 07-Июл-11, 19:53 
grc ping
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Скрипт для наглядного ping с ведением лога"  +/
Сообщение от pavlinux (ok) on 10-Июл-11, 14:51 
Пля, это же скрипт ТОЛЬКО для использования в conky!
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

12. "Скрипт для наглядного ping с ведением лога"  +/
Сообщение от Michael Shigorin email(ok) on 10-Июл-11, 15:43 
Рекомендую http://collectd.org -- там и быстрый опрос, и запись в локальный/серверный RRD, и пороги, и визуализация.  И не только ping. :)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "проверка связи"  +/
Сообщение от Sergii Artele email on 09-Авг-11, 07:44 
Не работает, может где ашиПка закралась. показывает только величину пингаи после него амперсанд, но лог не показывает,
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру