bobart |
|
Темы:
38
Сообщения:
2537
Участник с: 28 ноября 2009
|
Вобщем, помудрил с кроном тут… Возможно сделал топорно, но вроде отрабатывает на выдёргивание кабеля и т.п. Если предложите более изящный вариант, буду рад. А то с кроном впервые столкнулся, там подглядел, сям подтырил… 1. # touch /etc/cron.daily/cheknet # nano /etc/cron.daily/cheknet #!/bin/sh ping -c 1 -w 10 tp.corbina.net > /dev/null || /etc/rc.d/network restart 2. запуск каждые 5 мин. # touch /etc/cheknetcron # nano /etc/cheknetcron */5 * * * * /usr/sbin/run-cron /etc/cron.daily 3. указать crontab'у файл с расписанием: # crontab /etc/cheknetcron 4. # /etc/rc.d/crond restart ну и проверить, добавлен ли crond в /etc/rc.conf: DAEMONS=(syslog-ng network ... @crond ... ) Ещё косяк: если рестартится network, то xl2tpd тоже отваливается. Хотя, раз выдернул кабель, подождал секунд 5-10, вставил обратно, сеть поднялась, ppp0 на месте, инет есть. Вобщем, разбираться ещё надо. Есть шероховатость и в логе, но пока не знаю, важно ли это и что делать, если важно: cat /var/log/crond.log Oct 21 03:15:01 localhost crond[4328]: FILE /var/spool/cron/root USER root PID 6827 /usr/sbin/run-cron /etc/cron.daily Oct 21 03:16:25 localhost crond[7040]: mailing cron output for user root /usr/sbin/run-cron /etc/cron.daily Oct 21 03:16:25 localhost crond[7040]: unable to exec /usr/sbin/sendmail: cron output for user root /usr/sbin/run-cron /etc/cron.daily to /dev/null |
mithrusc |
|
Темы:
5
Сообщения:
32
Участник с: 10 июля 2010
|
bobart Я так понял у вас тоже не все идеально? xl2tpd перезванивает сам или нет? в логах есть gethostbyname? unable to exec /usr/sbin/sendmail: cron output for user root /usr/sbin/run-cron /etc/cron.daily to /dev/nullлокальную почту он хотел отправить руту, sendmail может быть нет а можт еще что Тот скрипт что я выложил тоже работает, думаю не составит большого труда заменить там команду на network restart. Все это костыли, нужен кто то кто сможет пакеты нормально собрать, и обьяснит по поводу поддержки l2tp в ядре арча |
bobart |
|
Темы:
38
Сообщения:
2537
Участник с: 28 ноября 2009
|
Привет, у меня тоже не всё идеально, но мы над этим работаем.) ps/ Про почту я понял. “gethostbyname” в логах нет. PS. Метод тыка привёл к такому скрипту, проверил, отрабатывает нормально, поставил в cron.daily - посмотрим… Кабель выдернут/вдёрнут: сеть рестартится и поднимается скриптом. Повторный запуск: если пинг до 8.8.8.8 возвращает 1: просто отрабатывает и завершается без передёргивания xl2tpd. Если отваливается ppp0, а локалка жива, то скрипт, по-любому, должен отработать xl2tpd restart. #!/bin/sh ping -c 1 -w 10 tp.corbina.net > /dev/null || /etc/rc.d/network restart && checknet=`ping -c 1 8.8.8.8 |grep icmp_ |wc -l` if [ ! $checknet = 1 ] then /etc/rc.d/xl2tpd restart fi exit 0 bob arch=NOPASSWD: /etc/rc.d/network bob arch=NOPASSWD: /etc/rc.d/xl2tpd Да, вот ещё: уважаемый PoZiTPoH заделал та-а-кой скриптище, для проверки сетевой активности! С “выражениями” в адрес корбины в notifications, одним словом, момент подмечен тонко. Если хорошо попросите, он вам ссылку на него предоставит, для тестирования. А я пока буду осознавать его произведение, втихаря. |
mithrusc |
|
Темы:
5
Сообщения:
32
Участник с: 10 июля 2010
|
bobart исправили таки)) там все было нормально. 1 в данном случае это сколько откликов на пинг он должен получить или не получить чтобы перезапустить/не перезапустить соединение. еще ! не хватало bob arch=NOPASSWD: /etc/rc.d/networkразумеется, arch в данном случае что? имя хоста? а если через ssh я команду даю? bob ALL= NOPASSWD: /etc/rc.d/xl2tpd и еще зачем в две строки? можно же так bob ALL= NOPASSWD: /etc/rc.d/xl2tpd,/sbin/reboot,/etc/rc.d/network Да, вот ещё: уважаемый PoZiTPoH заделал та-а-кой скриптище, для проверки сетевой активности! С “выражениями” в адрес корбины в notifications, одним словом, момент подмечен тонко. Если хорошо попросите, он вам ссылку на него предоставит, для тестирования. А я пока буду осознавать его произведение, втихаря.))это для тех кто софт пишет под линукс полезно, тут нужен кто то кто соберет этот хренов xl2tpd с наложенным патчем gethostbyname вот и все. и еще bobart раз вы сейчас “в теме” написали бы в русскую вики статью о настройке xl2tpd |
bobart |
|
Темы:
38
Сообщения:
2537
Участник с: 28 ноября 2009
|
vs - оно и так, и так работало, пинга нет - ответ “0”, но решил сделать как у вас. Не спец я в вопросе. По-всякому делал и есстественно, сначала скрипт просто в терминале выполнял и смотрел вывод. Но не суть. Насчёт SSH - я сделал так, как нужно мне, в том-то и дело, что не претендую на универсальное решение. Доступность только для моего хоста. Всё. bob arch= NOPASSWD: /etc/rc.d/xl2tpd,/sbin/reboot,/etc/rc.d/network,/etc… - тоже не суть=) Если вы в дебиане имели дело с этим, возьмите исходники, возьмите дебиановский патч gethostbyname и попробуйте пересобрать. Тут такое дело, не знаю, кому кроме вас, меня и тех немногих, кто использует xl2tpd это нужно. Никто не будет пересобирать. Если вы в теме - почему-бы и нет? Есть ABS, есть оф. сайт, откуда этот xl2tpd берётся и собирается, есть сорцы и деб.патч. Найдите все необходимые ингредиенты, сообщите, давайте вместе смотреть. Не, серьёзно, если хотите что-то сдвинуть - двиньте сами и народ за вами потянется) С вики пока обождём, да? - пусть тема устаканится. |
pztrn |
|
Темы:
23
Сообщения:
1436
Участник с: 20 сентября 2009
|
bobartЭто про exitcode ping'a? Если да, то когда нету пинга - exitcode 1. Нулевой - это когда программа (любая) отработала нормально, без ошибок ;) |
bobart |
|
Темы:
38
Сообщения:
2537
Участник с: 28 ноября 2009
|
В данном случае речь не о том. Соединение есть: bob@arch:~$ ping -c 1 8.8.8.8 |grep icmp_ |wc -l 1 bob@arch:~$ ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=52.5 ms --- 8.8.8.8 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 52.547/52.547/52.547/0.000 ms Если пинг не прошёл, выдаст “… icmp_seq=0 …” Соединения нет: $ ping -c 1 8.8.8.8 |grep icmp_ |wc -l 0 |
bobart |
|
Темы:
38
Сообщения:
2537
Участник с: 28 ноября 2009
|
mithrusc, http://wiki.archlinux.org/index.php/Con … ifplugd.27 Ifplugd Вы можете установить демон, который будет автоматически настраивать вашу сеть, когда воткнут кабель, и возвращать её в исходное состояние, когда кабель выдернут. Это полезно для лаптопов с внутренними сетевыми адаптерами, так как демон настроит интерфейс только тогда, когда кабель действительно подключён. Также можно его использовать, когда надо перезапустить сеть, но вы не хотите перезапускать компьютер или делать это из оболочки. Установка очень проста, так как пакет находится в [extra]: # pacman -S ifplugd По умолчанию он настроен на работу с интрфейсом eth0. Эта и другие настройки, например задержка, могут быть настроены в /etc/ifplugd/ifplugd.conf. Запустите его: # /etc/rc.d/ifplugd start или добавьте в список DAEMONS в /etc/rc.conf |
pztrn |
|
Темы:
23
Сообщения:
1436
Участник с: 20 сентября 2009
|
bobartСоветую уже почитать про exitcodes (return codes) - намного удобнее будет, ибо 0 - это всегда удачное завершение программы, а <> 0 - неудачное. Очень удобно для скриптинга. Так что как бы лень не было - но почитай ;) И да - соединение может быть нестабильным. То есть первый раз пинг прошел, а вот последующие несколько - нет. Поэтому не вижу смысла ставить меньше -c 4. |
bobart |
|
Темы:
38
Сообщения:
2537
Участник с: 28 ноября 2009
|
И да - соединение может быть нестабильным. То есть первый раз пинг прошел, а вот последующие несколько - нет. Поэтому не вижу смысла ставить меньше -c 4.Тоже об этом подумывал, ага) exitcodes - прислушаюсь, спасибо. Меня несколько смущает сама идея строить правило на основе пинга, в данном случае. Строить его на основе route -n |grep ^0.0.0.0 | awk ‘{ print $2 }’ (например) - тоже сомнительно. Вобщем, да увеличить пинг до 4, пожалуй, верно. Сейчас 3 - вчера изменил;) ps/ #!/bin/sh ping -c 4 -w 10 tp.corbina.net > /dev/null || /etc/rc.d/network restart && ping -c4 8.8.8.8 &> /dev/null if [ ! $? -eq 0 ] then /etc/rc.d/xl2tpd restart fi exit 0 |