LINUX.ORG.RU
ФорумAdmin

google=`ping -c 6 -q -W 2 8.8.8.8 | grep transm | awk '{print $4}'`


0

2

Использую вот такую конструкцию для проверки доступности google dns

#!/bin/bash google=`ping -c 6 -q -W 2 8.8.8.8 | grep transm | awk '{print $4}'`

if [ google -eq 0 ]

then

else

fi

В момент выполнения google=`ping -c 6 -q -W 2 8.8.8.8 | grep transm | awk '{print $4}'`

На сервере скачет задержка (latency) по всем сетевым службам, по простому сказать скачет пинг.

Тоесть задача висит в кроне, и выполняется каждые две минуты. У меня открыта ssh сессия и я просто «пингую» гугл, и жду запуска скрипта. В течение в промежутках между его запуском задержка 5 мс. Когда он запускается, пара пакетов имеет задержку 200-250 мс. Следовательно это очень ошутимо для важных сетевых сервисов.

Подскажите пожалуйста, как можно видоизменить проверку сохранив функционал и избавится от такой большой задержки?

У меня есть мысль делать примерно следующее, выношу на обозрение, с вопросом - поможет ли? может есть более элегантные решения?

#!/bin/bash

touch /wrk/tst/google.ext

ping 8.8.8.8 -c 6 > /wrk/tst/google.ext

touch /wrk/tst/google.int

cat /wrk/tst/google.ext | grep transm > /wrk/tst/google.int

touch /wrk/tst/google.awk

cat /wrk/tst/google.int | awk '{print $4}' > /wrk/tst/google.awk

google='cat /wrk/tst/google.awk'

rm /wrk/tst/*

if [ google -eq 0 ]

then

else

fi

Конечно не очень красиво, но мне главное, чтобы не «глючило». Спасибо большое сообществу OpenSource!

С уважением, Ростислав.

P.S. понимаю что последнее изрекание с touch тянет на попадание в govnokod.ru



Последнее исправление: woinc (всего исправлений: 3)

Ответ на: комментарий от feinsbot

Если на сервере проблемы с задержкой, то можно поплясать с параметром "-w", он задает время ожидание пакета, перед тем, как помечать его потеряным

feinsbot
()
Ответ на: комментарий от feinsbot

-w

может попробовать убрать из скрипта -w

ping -c 2 -w 1 8.8.8.8 ?

может в этом собственно и проблема, вы к этому ведете на счет «поиграться с параметром -w»?

Thank you

woinc
() автор топика
Ответ на: -w от woinc

-w

просто скрипт работает, а то, что работает трогать не хочется, на одном серве он ни кому не мешает. Дал кусок «глюко-кода» товарищу, вот он у него зазбоил. А у него критично. Он вырубил этот кусок. Сейчас в поиске решения.

woinc
() автор топика
Ответ на: -w от woinc

Ваш скрипт убог чуть более, чем полностью и весь заменяется однострочником, что я написал в первом посте.

И всё же объясни кратко, одним предложением, что тебе таки нужно.

Твои простыни из текста абсолютно нечитабельны. И оформляй код в [code][/code]

Еще раз:

if ping -c 2 -w 2 8.8.8.8 1>/dev/null then
 #тут код, который выполняется, когда гуглоднс доступен
else
 #тут код, который выполняется, когда он не доступен
fi
feinsbot
()
Ответ на: комментарий от feinsbot

И еще советую почитать книжек по скриптингу на баше (advanced bash scripting guide), без знания некоторых очевидных вещей писать скрипты очень тяжело

if ping -c 2 -w 2 8.8.8.8 1>/dev/null; then
 #тут код, который выполняется, когда гуглоднс доступен
else
 #тут код, который выполняется, когда он не доступен
fi

код из прошлого поста с исправленной опечаткой

feinsbot
()
Ответ на: комментарий от feinsbot

=)

Я понимаю, что можно однострочником заменить, спасибо. Пост пишу на лоре чуть ли не первый, по сему спасибо что ругаете.

Главное не получить граблей в виде высокой задержки при проверке доступности хоста, вот все, что мне нужно.

woinc
() автор топика
Ответ на: =) от woinc

в общем

Спасибо за ответы и ругань.

На самом деле, это было совпадение.

Дело в том, что у меня на одном роутере один очень хитрый скрипт, для многих он не покажется чем-то из ряда вон, и даже возможно попадет на «говнокод», но все же. Проблема у меня остается.

Я не пробовал ваш вариант вставлять, так как повторюсь, ломать не хочется.

А товарищ который просил скрипт, и я ему дал, в принципе доволен, и скачков задержки на его серваке нет даже с «моим» вариантом проверки.

Хотя эта проверка не моя, а нашел я ее в нашем дружном сообществе. =)

Это было совпадение.

Но вот вопрос, почему у меня могут быть задержки на роутере?

Может быть есть кто-то с получасом тире часом свободного времени, и желанием research, а так же стремлением помогать другим, кто свяжется со мной по скайпу, и поможет решить микро проблему? =)

Спасибо.

woinc
() автор топика
Ответ на: =) от woinc

ну это облегчает задачу. посмотри трассу да сделай вывод на каком хопе рождается задержка

zolden ★★★★★
()
Ответ на: комментарий от feinsbot

feinsbot> Ваш скрипт убог чуть более, чем полностью и весь заменяется однострочником, что я написал в первом посте.

Ути-пуси как круто, только его говноскрипт сработает при плохой связи (с потерями пакетов), а твой нет.

sdio ★★★★★
()
Ответ на: комментарий от feinsbot

Дык тебе эта строка не понравилась своей говнистостью. Типа он проверяет stdout, a ты код возврата ping'a

sdio ★★★★★
()
Ответ на: комментарий от sdio

мне не понравилось в большей степени то, что он значение переменной аж через жфайл делает

Типа он проверяет stdout, a ты код возврата ping'a

я просто на свой манер сделал

feinsbot
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.