Попробовать 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 ведущее устройство.
Я бы использовал это, простой одноклассник:
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 &
снова заменить имя хоста
Хозяин, который вы пытаетесь пинг. В этом подходе вы передаете имя хоста в качестве аргумента для оболочки.
Так же как общее предупреждение, если ваш хост остается вниз, у вас будет этот скрипт непрерывно пинга в фоновом режиме, пока вы либо убьете его, либо хост не найден. Поэтому я бы имел в виду это в виду, когда вы запускаете это. Потому что вы могли бы в конечном итоге есть системные ресурсы, если вы забудете об этом.
ping -oc 100000 Hostname > /dev/null && /root/scripts/test1.sh
Ping -O
выходит из Ping
после получения первого пакета > / dev / null
, перенаправляет выход, поэтому вы не увидите его &&
будет запустить следующую команду, если предыдущая команда успешна , кроме того, вы можете запустить любой процесс в фоновом режиме путем добавления и
до конца IT; Например, Echo «123» &
будет работать на заднем плане
Также я думал, вы могли бы редактировать скрипт для явного использования 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.
Старый пост, но в качестве совета вы можете использовать опцию -w
в ping, чтобы избежать цикла. Например,
ping -w 30 -c 1 host
будет пытаться в течение 30 секунд с одним пингом в секунду (по умолчанию ping имеет интервал в 1 секунду между пингами) и завершит попытку при первом успешном пинге.
Если вам не нужен таймаут, т.е. ждать вечно, просто используйте очень большое значение с -w
.
Вот рабочая модификация вашего скрипта.
#!/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:~$
#!/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