Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Теперь создаем файл startinet.sh
|
Делаем эти файлы выполняемыми и добавляем в крон запуск startinet.sh, например каждую минуту.
Вот вроде и все. В конце месяца можем предъявить файл internet.log провайдеру.
Нашел более правильный способ.
В параметрах подключения в файле ppp.conf добавляем
|
Теперрь можно без всяких скриптов обойтись.
|
proxy-man, 2006-11-15 в 13:56:53
Молодцом камрад!!! Остро-насущная тема однако... :-)
Vlad11, 2006-11-16 в 0:15:47
У меня тоже подключение через PPPoE, но у меня скрипт автоматом подумыется при дисконнекте.
ckpom, 2006-11-19 в 8:54:04
пасиб, как раз думал... а сач и думать не надо стало )))
warden, 2006-11-22 в 15:37:05
Спасибо за статью, весьма актуальна!
В startinet.sh последняя строка:
/usr/local/etc/myscript/TESTINET.SH ???
TESTINET.SH откуда взялось?
BAV_Lug, 2006-11-23 в 11:58:51
Ошибка, поправил.
info, 2006-11-30 в 9:19:42
Хуже нет определять связь по пингам, необходимо определять по наличию устроства в системе, при такой проверке связь может прыгать каждую минуту -)
BAV_Lug, 2006-11-30 в 12:08:18
В том то и дело, что устройство есть, а связи нет :(
А прыгать не будет. Если у вас из трех пингов к ДНС прова не прошел не один, то только тогда мы считаем, что связи нет (кстати их количество легко можно увеличить, но вот зачем?)
Аноним, 2007-01-03 в 16:21:14
Только такие методы плодят у Укртелекома "нулевые коннекты"
А они за такие вещи даунят порт и просят искать другие методы восстановления соединения после падения линка.
Модем настореный РОУТЕРОм спасает от таких неприятных казусов ))
Lemegeton, 2007-01-11 в 17:05:38
>> # Ждем пока помрут тунели (этот параметр индивидуален и
>> # подбирается экспериментальным путем)
>> sleep 5
Хм, ненадежно - процессы имеют свойство со временем завершаться все дольше и дольше... ;) Можно взглянуть на FreeBSD'шный rc.subr скрипт и "выцепить" оттуда пару функций по остановке процессов (wait_for_pids(), _find_processes() etc...), или просто подключть /etc/rc.subr, для FreeBSD'шников, которые помогут дожидаться завершения процессов, а не подгонять время их завершения вручную.
Весельчак У., 2007-03-16 в 16:41:32
А mpd если попользовать? :-)
proxy-man, 2007-05-14 в 19:15:18
to BAV_Lug - в связи с тем, что появились дополнения к этой статье, касающиеся работы ppp, интересует полный конфиг ppp.conf при условии использования данных опций:
enable lqr # Включаем Link Quality Request. Каждый N секунд вам посылаеться сигнал от сервера
# и если сервер не получает ответа, то соединение разрываеться.
set lqrperiod 5 #Ставим N=5 для предыущей строки.
dvg_lab, 2007-07-28 в 22:17:31
c mpd вообще ничего изобретать не надо, и протоколы оно все умеет и умное само по себе. Выдираешь кабель из сетевухи - все падает, втыкаешь обратно и секунд через 10 все работает - красота :-) mpd рулит.
from siveria, 2007-11-12 в 11:06:11
ето токо на украине могут быть такие проблемы? :)
mdv, 2008-03-26 в 14:14:46
конструкцию
===
is=`/sbin/ping -c 3 IP-адрес (например DNS прова) | grep -c "64 bytes"`
# Проверяем прошли ли пинги
if !(test $is -gt "0")
===
заменить на
===
if (ping -qnc3 $IP 2>&1 >/dev/null)
===
меньше кода и аккуратнее.
+ не надо городить конвеера ping + grep, а вдруг пакеты не по 64 байта захочется? придется менять не только ключики у пинга, а еще и паттерн у грепа ;)
+ не надо вызывать test
+ меньше переменных. особенно если $IP захардкодить. ;)
аналогично с
===
testz=`ps ax | grep -c testinet.sh`
if (test $testz -gt "1")
===
на
===
if (ps ax | grep -q [t]estinet.sh)
===
если греп найдет чего - вернет ноль
квадратные скобки отучат греп матчить самого себя, типа:
===
$ ps ax | grep testinet.sh
13962 p0 S+ 0:00.00 grep testinet.sh
===
в то время как ps ax | grep [t]estinet.sh не находит ничего ;)
mdv, 2008-03-26 в 14:21:35
до кучи.... в таких скритах правильнее pid-файл делать
типа в начале
if (test -f /tmp/testinet.pid)
then
if !(ps -p `cat /tmp/testinet.pid` 2>&1 >/dev/null)
then
echo $$ > /tmp/testinet.pid
else
exit 1
fi
else
echo $$ > /tmp/testinet.pid
fi
дур_прогер, 2008-09-23 в 14:44:20
кто ж так пишет скрипты и вообще проги? прямо в коде нечто "IP-адрес (например DNS прова)"
делай так: заведи переменную и прокоментарь ее как "IP-адрес (например DNS прова)", в переменной укажи как надо указывать адрес: ip или имя.
mad, 2008-11-07 в 0:08:00
в семерки такая комбинация проверки подключения
enable lqr echo
set reconnect 3 5
set redial 3 10
set lqrperiod 45
poison, 2008-12-02 в 15:05:44
/etc/crontab
*/5 * * * * root /usr/local/etc/inet_detect/dns.sh > /dev/null 2>&1
59 23 * * * root /usr/local/etc/inet_detect/logsrotate.sh > /dev/null 2>&1
/usr/local/etc/inet_detect/
-rwxr-xr-x 1 root 1001 656B 2 дек 14:43 dns-detect.sh
-rwxr-xr-x 1 root 1001 197B 2 дек 14:44 dns.sh
-rwxr-xr-x 1 root poison 1,6K 2 дек 11:57 log2html.sh
---x--x--x 1 root poison 1,0K 2 дек 11:58 logsrotate.sh
#cat dns.sh
#!/bin/sh
#
# Проверяем наличие скрипта в памяти
dnsd="/usr/local/etc/inet_detect/dns-detect.sh"
if (ps ax | grep [d]ns-detect.sh)
then
exit 1 # Если уже есть, то выходим
else ${dnsd}
fi
#cat dns-detect.sh
#!/bin/sh
#
log="/var/log/inet_detect/dns-detect.html"
nr="" # Флаг пропадания инета
ni="" # Флаг появления инета
ip="YOUR_DNS_IP"
#
while !(test $ni)
do
pings=`/sbin/ping -c 4 ${ip} | grep -c "[i]cmp"` > /dev/null 2>&1
if !(test $pings -gt "0" ) > /dev/null 2>&1 # Проверяем прошли ли пинги
then
if !(test $nr) > /dev/null 2>&1
then # Если инета нет, то запоминаем время
nr=1
timefix=`date`
fi
else
if (test $nr) > /dev/null 2>&1
then
echo "<TR bgcolor="DAE0E7"><TD \
align=center width=800><CODE style=font-size:12px> \
DNS не отвечал с $timefix до `date`</CODE></TD>" >> \
${log}
fi
ni=1
fi
done
#cat log2html.sh
#!/bin/sh
#
newfile="/usr/bin/touch"
say="/bin/echo"
#
dnstags='
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html;charset=koi8-r">
</HEAD>
<BODY style="margin: 0 0 0 0; padding: 0 0 0 0; BACKGROUND-COLOR: #f1f1f1; BORDE R-RIGHT: #999999 1px solid; MARGIN: 0px; BORDER- LEFT: #999999 1px solid; ">
<CENTER>
<TABLE width="800" border="0" cellpadding="0" cellspacing="0">
<TBODY>
<TR><TD width="800" bgcolor="#707680">
<TABLE border="0" width="800" cellspacing="1" cellpadding="3">
<TBODY>
<TR bgcolor="#B9CCDF">
<TD align="center" colspan="6">
<CODE><b>Статистика отсутствия связи с DNS</b></CODE>
</TD></TR>
<TR bgcolor="#f1f1f1"><TD align="center" colspan="6">
<CODE> </CODE></TD></TR>'
#
dnslog="/var/log/inet_detect/dns-detect.html"
#
${newfile} ${dnslog}
${say} ${dnstags} >> ${dnslog}
#cat logsrotate.sh
#!/bin/sh
#
# Set variables
#date="/bin/date"
copy="/bin/cp"
makedir="/bin/mkdir"
send="/usr/bin/mail"
del="/bin/rm"
say="/bin/echo"
worldlog="/var/log/inet_detect/world-detect.html"
dnslog="/var/log/inet_detect/dns-detect.html"
log2html="/usr/local/etc/inet_detect/log2html.sh"
webdir="/usr/local/www/apache22/https/pings"
lastday=`date -v1d -v+1m -v-1d "+%d"`
currday=`date "+%d"`
dirname=`date "+%Y%m"`
closetags='</TBODY></TABLE></TD></TR></TBODY></TABLE><BR><BR></BODY></HTML>'
#
# Program begin
if [ ${lastday} -eq ${currday} ] > /dev/null 2>&1
then
${say} ${closetags} >> ${worldlog}
${say} ${closetags} >> ${dnslog}
${send} -s "Internet ping failures." root@rjhost.ru < ${worldlog}
${send} -s "DNS ping failures." root@rjhost.ru < ${dnslog}
cd ${webdir}
${makedir} ${dirname}
${copy} ${worldlog} ${webdir}/${dirname}/
${copy} ${dnslog} ${webdir}/${dirname}/
${del} ${worldlog}
${del} ${dnslog}
${log2html}
else
# echo -n "Сегодня не последний день месяца"
# echo "."
fi
poison, 2008-12-02 в 15:10:42
Комменты:
данная конструкция в последний день месяца отправляет админу логи и копирует их в папку доступную по http,
после чего трет и создает новые.
ufs, 2009-04-12 в 16:01:03
mad, 2008-11-07 в 0:08:00
>в семерки такая комбинация проверки подключения
>enable lqr echo
>set reconnect 3 5
>set redial 3 10
>set lqrperiod 45
У меня это и в 6.2 было...
Xan, 2010-01-21 в 15:55:43
# (хотя в принципе этого можно и не делать)
sleep 5
else
зачем после sleep идёт else ?
это при том, что выше указано fi то есть, что конструкция if then else закрыта.
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
вверх
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [21 шт.]