Видео смотреть бесплатно

Смотреть без регистрации видео

Официальный сайт jhealth 24/7/365

Смотреть видео бесплатно

10.12.10 08:34 green

Есть вопрос!Conky и ping

Возникло у меня желание мониторить коньками пинг до серверов, чтобы сразу видеть, если какой-то из них отвалится. В интернетах нашёл такой вариант решения:
${execi 60 ping -c 1 192.168.10.1 |grep "time=" | sed "s@^.*time@time@"}

всё работает, на выходе выдаёт строку формата: time=x.xxx ms

Но меня это немного не устраивает, т.к. нужно пинговать одновременно полтора десятка серверов и при этом варианте вывода оно занимает слишком много места на экране. Подскажите, как можно сделать вывод только времени пинга безо всяких time= и ms?


Теги:

saver 10.12.10 08:51 # +2
icinga, nagios (что по факту одно и тоже), cachi, zabbix. Все таки 10-15 серверов уже что-то.
cubiccat 10.12.10 08:59 # +1
Первое, что пришло в голову
ping -c 1 blabla | grep "time=" | sed 's/^.*time=//' | sed 's/ ms$//'
xT 10.12.10 09:11 # +7
два седа можно объединить в один
sed 's/^.*time=//;s/ ms$//'
slava sh. 11.12.10 21:52 # +2
два регулярных выражения можно объединить в одно
sed 's/^.*time=\| ms$//g'
xT 10.12.10 09:07 # +0
ping -c 1 host | grep time= | awk '{print $7}' | sed s/time=//
lava 10.12.10 10:25 # +1
grep time= | awk '{print $7}'
равносильно
awk '/time=/{print $7}'

но в общем и целом я бы написал совершенно иначе:

1
2
3
4
$ bash -c 'HOSTNAME=login.icq.com; PING_RESULT=`ping -c1 -W1 $HOSTNAME` && echo "$PING_RESULT" | sed -nr "s/^.*time=([0-9]+\ *ms).*$/\1/p" || echo OFFLINE'
168 ms
$ bash -c 'HOSTNAME=icq.com; PING_RESULT=`ping -c1 -W1 $HOSTNAME` && echo "$PING_RESULT" | sed -nr "s/^.*time=([0-9]+\ *ms).*$/\1/p" || echo OFFLINE'
OFFLINE


Предлагаю эту команду в этом виде только если нет желания создать небольшой скриптик и кинуть его куда-нибудь в /usr/local/bin.
mealsforall 10.12.10 09:44 # +8
fping host || echo "DOWN"
k1b 10.12.10 09:49 # +0
+500 fping
Daria 11.12.10 10:48 # +0
на правах смехуючечков:

for a in {1..1000}; do sudo ping -f $host; done 1> /dev/null && echo $host DOWN
lava 11.12.10 19:04 # +0
Неправильно =)

1) цикл из тысячи последовательных флуд пингов
2) у меня sudo спрашивает пароль рута при каждом запуске. 1000 запусков - это многабукаф
3) "&&" тут ни к селу, ни к городу. Достаточно ";"

su -c 'host=192.168.1.1; ln -sf /dev/null ./nohup.out; for a in {1..1000}; do nohup ping -f $host 1>/dev/null 2>&1 &; done; echo $host DOWN'

Но на самом деле может означать, что DOWN не столько целевой хост, сколько Ваш собственный. Одна машина не создаст поток соединений, который вызовет отказ в обслуживании удалённой машины. Скорее будет забит собственный интерфейс.
DimoNya64 10.12.10 10:49 # +0
ping -c 1 82.116.60.4 |grep "time=" | sed "s/^.*time=\([0-9]\{1,\}\(.[0-9]\{1,\}\)*\)\( ms\)/->\1/"


или, если экранировать не нужно ..

ping -c 1 82.116.60.4 |grep "time=" | sed "s/^.*time=([0-9]{1,}(.[0-9]{1,})*)( ms)/->\1/"
lava 10.12.10 15:24 # +1
народ, почему так много примеров с любовью к грепу и конвейерам, если уже определено, что используется sed? к чему лишние вызовы и конвейеры? это же только потери.

grep "smth" | sed "s/smth//"
равносильно
sed -n "s/smth//p"

[0-9]{1,} есьм [0-9]+
DimoNya64 10.12.10 16:16 # +0
согласен ... меньше кнопкоф ... но суть та же ... =)
shtsh 10.12.10 12:53 # +3
В любом случае мониторить нужно хосты и сервисы на них. Так что настрой nagios. Он тебе и смс отошлёт, если что случится. Это самый адекватный способ следить за проблемами.
x0x01 10.12.10 13:52 # +2
zabbix еще невообразимо хорош! ;)
lava 10.12.10 17:07 # +0
Немного поразвлекался, сваял скриптик. Суть - пингует пачку серверов параллельными потоками.

Синтаксис прост как грабли: скрипт опции хосты
(на самом деле опции и хосты можно вперемешку)

Опции:
-c|--color) # Colored output
-u|--units) # Show measurements units
-t|--timeout) # Set different timeout
-a|--accessible-only) # Do not show servers which are unavailable

Минусы обусловлены асинхронной работой: никакой сортировки, параллельные потоки "корректируют" время отклика в худшую сторону (например, мой модем в пачке с десятком других хостов откликается порядка 30ms при обычных 1-2ms).

В общем, так, если кому интересно поковырять. А так он и мне-то не нужен %)
А автору топика стоило бы хоть привести пример, что он хочет видеть и как запускать (одной командой пачку али каждый хост отдельно).

srv_check.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/sh

###
#
# @author lava
#
# Check list of servers on availability
#

# Default options
TIMEOUT=1

#
# Get options from command-line arguments
SHORTOPTS='Qcut:a'
LONGOPTS='query,color,units,timeout:,accessible-only'

ARGS=$(getopt -a -n $(basename "$0") \
    -o ${SHORTOPTS} \
    -l ${LONGOPTS} \
    -- "$@" \
    2>/dev/null)

eval set -- "$ARGS"

#
# Parse args
while [[ "${1}" != -- ]]
do
    case "${1}" in
    -Q|--query)             # Quick query mode for single host
        QUERY=true
        ;;
    -c|--color)             # Colored output
        COLOR=true
        ;;
    -u|--units)             # Show measurements units
        UNITS=true
        ;;
    -t|--timeout)           # Set different timeout
        TIMEOUT=${2}
        shift
        ;;
    -a|--accessible-only)   # Do not show servers which are unavailable
        ACCESSIBLE=true
        ;;
    esac
    shift
done
shift # Remove last processed key


if [ "$QUERY" = "true" ]
then
###
#
# Query mode accepts only a single host to ping and give an output information
#

    HOST=$1

    PING_RESULT=`ping -c1 -W$TIMEOUT $HOST 2>&1`
    if [ $? = 0 ]
    then
        [ "$COLOR" = "true" ] && RESULT="\033[32m" || RESULT=""
        [ "$UNITS" = "true" ] && UNITSED="\3" || UNITSED=""
        RESULT=$RESULT`echo "$PING_RESULT" | sed -nr "s/^.*time=([0-9]+(\.[0-9]+)?)(\s*[a-zA-Z-]+).*$/\1$UNITSED/p"`
    else
        [ "$ACCESSIBLE" == "true" ] && exit 1
        [ "$COLOR" = "true" ] && RESULT="\033[31m" || RESULT=""
        RESULT="$RESULT"OFFLINE
    fi

    [ "$COLOR" = "true" ] && RESULT=$RESULT"\033[0m"
    echo -e "$HOST: $RESULT"
else
###
#
# Manager mode: will launch separate instance for every host and wait them all
#

    BIN=`readlink -f "$0"`

    for HOST in $@
    do
        OPTS="-t$TIMEOUT"
        [ "$COLOR" = "true" ] && OPTS="$OPTS -c"
        [ "$UNITS" = "true" ] && OPTS="$OPTS -u"
        [ "$ACCESSIBLE" = "true" ] && OPTS="$OPTS -a"
        $BIN -Q $OPTS $HOST &
        PID_LIST="$PID_LIST $!"
    done

    wait

fi
 
lava 10.12.10 17:29 # +0
Хм. Звбыл удалить остатки экспериментов: переменная PID_LIST не нужна.

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 154)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 3098 из 229 городов)
            Топ пользователей Топ блогов
            welinux.ru
            Пластические хирурги предлагают - пластические операции. Москва.

            В хорошем качестве hd видео

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн