Говорят, сказамши "Ы", надо сказать и "Ъ". Это я о предыдущем посте, где я упомянул про окончание настроек сервера для работы с мегафоном. Упомянул - значит надо рассказать, как - вдруг пацанам пригодится?
Рассказываю. К сожалению, штатными средствами ubuntu 12 (12.04 LTS) заставить работать 4Г модем от мегафона (huawei e3272) непрерывно в "unattended" режиме (т.е. так, как надо для сервера доступа) не получилось никакими силами. Рано или поздно, случался "разрыв", после которого modem manager убунты вставал раком и категорически не желал не только рестартовать связь, но и даже видеть сам модем (который оставался вполне воспринимаемым и видимым системой). Уж не знаю, в чём проблема - в modem manager-е или в мегафоне или в самом модеме (на 3Г модеме всё работало) - но решать её надо было. Пришлось написать простой скрипт, который мониторит интерфейс ppp и вручную всё рестартует, применяя исключительно штатные средства 12-й убунты, без всякого хакерства, вроде прямого программирования дайлеров и прочих PPP. Чтобы всё правильно работало, опции интерфейса Mobile Broadband убунты надо установить по умолчанию.
Сам скрипт такой:
#!/bin/bash
reconnect () {
/usr/bin/logger -p "syslog.info" -t "${ME}" "Restarting connection Megafon RUS..."
/usr/sbin/service modemmanager restart
sleep 20
/usr/bin/nmcli -t con up id "Megafon RUS"
}
ME=`basename $0`
if [ "$1" = "--daemon" ]; then
/usr/bin/logger -p "syslog.info" -t "${ME}" "Starting monitoring..."
while true; do
sleep 60
/sbin/ifconfig ppp0 >/dev/null 2>&1 || reconnect
done
else
if [ `whoami` != root ]; then
echo "Must be root" 1>&2
exit 1
fi
if [ -x /usr/sbin/service -a -x /usr/bin/nmcli -a -x /sbin/ifconfig ]; then
nohup "$0" --daemon >/dev/null 2>&1 &
exit 0
else
echo "Can not run /usr/sbin/service or /usr/bin/nmcli or /sbin/ifconfig" 1>&2
exit 1
fi
fi
Скриптик сам себя демонизирует и, будучи единожды запущен, уходит в бекграунд и больше не мешается. Вся диагностика валится в syslog.