Файл сценария ping Bash для того, чтобы проверить наличие хоста

Попробовать FEATURE(preserve_local_plus_detail) в Вашем .mc файл, и восстанавливает Ваш .cf. Это изменяет ruleset 5 (localaddr). Это может вызвать побочные эффекты (т.е. если Ваша локальная почтовая программа не поддерживает +detail).

Если это неблагоприятно производит Ваш поиск псевдонимов, то, возможно, _FFR_ALIAS_DETAIL для Вас, это - время изготовления (т.е. нет .cf) опция, я не могу сказать, что протестировал ее все же. Не рекомендуемый ;-)

Приводя это к сбою, единственный путь I видит выполнения, что-либо как Вы требует только с управляемым пользователями .forward файлы должны проверить Ваш confFORWARD_PATH включает путь, который имеет a $h компонент. Это должно быть значением по умолчанию по крайней мере начиная с 8,12:

O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward

Это позволит, пользователи для создания говорят, ~/.forward.extra управлять, где "user+extra" обратился к электронной почте, идет:

$ sendmail -v -d27.2  -bv elrond+foo 
alias(elrond+foo)
alias(elrond+*)
alias(elrond)
alias(elrond)
forward(elrond+foo)
include(/home/elrond/.forward.thishost+foo)
include(/home/elrond/.forward+foo)
include(/home/elrond/.forward.thishost)
include(/home/elrond/.forward)
elrond+foo... deliverable: mailer local, host foo, user elrond

(Вы видите вперед файлы, обрабатываемые include() функционируйте ‒, это не имеет никакого понятия расширения, когда это читает файлы.)

FEATURE(virtusertable) как предложено в другом месте, вероятно, лучший способ пойти, если Вы - вид сценариев, Вы могли бы забрать пользователя ~/.xforward файлы периодически и сборка virtusertable ведущее устройство.

4
01.06.2019, 21:02
6 ответов

Я бы использовал это, простой одноклассник:

while ! ping -c1 HOSTNAME &>/dev/null; do echo "Ping Fail - `date`"; done ; echo "Host Found - `date`" ; /root/scripts/test1.sh

заменить имя хоста с хостом, который вы пытаетесь пинг.


Я пропустил роль о том, чтобы положить его в фоновом режиме, положить эту линию в хоте, как так:

#!/bin/sh

while ! ping -c1 $1 &>/dev/null
        do echo "Ping Fail - `date`"
done
echo "Host Found - `date`"
/root/scripts/test1.sh

и на задний план, который вы запускаете его так:

nohup ./networktest.sh HOSTNAME > /tmp/networktest.out 2>&1 &

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

Так же как общее предупреждение, если ваш хост остается вниз, у вас будет этот скрипт непрерывно пинга в фоновом режиме, пока вы либо убьете его, либо хост не найден. Поэтому я бы имел в виду это в виду, когда вы запускаете это. Потому что вы могли бы в конечном итоге есть системные ресурсы, если вы забудете об этом.

10
27.01.2020, 20:45
ping -oc 100000 Hostname > /dev/null && /root/scripts/test1.sh 
  • Ping -O выходит из Ping после получения первого пакета
  • > / dev / null , перенаправляет выход, поэтому вы не увидите его
  • && будет запустить следующую команду, если предыдущая команда успешна

, кроме того, вы можете запустить любой процесс в фоновом режиме путем добавления и до конца IT; Например, Echo «123» & будет работать на заднем плане

2
27.01.2020, 20:45

Также я думал, вы могли бы редактировать скрипт для явного использования Bash Вставляя:

#! / PathTobash /

в сценарии как первая строка

E.g. #! / bin / bash

или сделать явную

/ pathtobash / scripttorun

Вызов e.g. / bin / bash / scripttorun

-121--133600-

, передавая параметры «-C 30» на пинг, он постарается 30 пинг и остановка. Это проверит после успешной команды. Я думаю, что лучше сделать петлю, которая содержит одну пинг и проверить, преуспевает ли этот пинг. Что-то в этом роде:

while true;
do
  ping -c1 google.com
  if [ $? -eq 0 ]
  then 
    /root/scripts/test1.sh
    exit 0
  fi
done

Если все еще бегая на переднем плане, вы имеете в виду, что он все еще печатает на терминале, вы можете перенаправить stdin и stdout к / dev / null.

5
27.01.2020, 20:45

Старый пост, но в качестве совета вы можете использовать опцию -w в ping, чтобы избежать цикла. Например,

ping -w 30 -c 1 host

будет пытаться в течение 30 секунд с одним пингом в секунду (по умолчанию ping имеет интервал в 1 секунду между пингами) и завершит попытку при первом успешном пинге.

Если вам не нужен таймаут, т.е. ждать вечно, просто используйте очень большое значение с -w.

4
27.01.2020, 20:45

Вот рабочая модификация вашего скрипта.

#!/bin/bash
ping -c1 10.1.1.23 > /dev/null
if [ $? -eq 0 ]
  then 
    echo ok 
    exit 0
  else
    echo “fail”
fi

Вам необходимо отправить результат на /dev/null, чтобы он не отображался на экране.

-cпредназначен для подсчета. Если вы поместите -c30, вы будете пинговать 30 раз, прежде чем ваш скрипт сможет перейти к следующей строке. Я использую -c1, чтобы скрипт работал быстрее.

-iозначает ожидание в секундах между отправкой каждого пакета. Таким образом, -i3означает ожидание 3 секунды. Я удаляю -i, чтобы скрипт работал быстрее.

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

Пример вывода

user@linux:~$./script.sh 
ok
user@linux:~$

user@linux:~$./script.sh 
“fail”
user@linux:~$ 
2
27.01.2020, 20:45
#!/bin/sh

if [ $1 ]
then
for i in ` cat $1`
do
VAR1=$(ping -ac 2 $i| grep -c error)
if [ $VAR1 == "0" ]
then
echo " valid : $i"

else

echo " invalid : $i"

fi

done
else
echo " please present the file name. example: pong /tmp/a "

fi
0
27.01.2020, 20:45

Теги

Похожие вопросы