В этом треде оказались административно объединены две малосвязанные вещи --- нативная компиляция expect с выложенными бинарниками достаточно древних версий expect и tcl, и весьма любопытный скрипт от cyrax вынесенный в название темы. Читателям, которые интересуются собственно темой треда, рекомендую пропустить первые 11 постов и идти сразу сюда: expect на shell, или авто-телнеттинг
----------
Наблюдается многократно обсуждавшаяся проблема, что при разрыве соединения (предположительно со стороны провайдера), соединение не восстанавливается и в логе возникает (иногда многочасовая) вереница сообщений:
May 9 11:27:33 pppd[6319]: Timeout waiting for PADO packets
May 9 11:27:33 pppd[6319]: Unable to complete PPPoE Discovery
Олег рекомендовал выставить в дополнительных опциях pppd "maxfail 0", у меня в этой строке в веб-интерфейсе не стоит ничего, однако pppd запускается коммандой pppd file /tmp/ppp/options.wan0, и файл /tmp/ppp/options.wan0 содержит:
PHP Code:
noauth refuse-eap
user xxx
password xxx
nomppe nomppc
plugin rp-pppoe.so rp_pppoe_service 'stream' nic-vlan1
mru 1492 mtu 1492
maxfail 0
usepeerdns
persist
ipcp-accept-remote ipcp-accept-local noipdefault
ktune
default-asyncmap nopcomp noaccomp
novj nobsdcomp nodeflate
lcp-echo-interval 10
lcp-echo-failure 6
unit 0
Т.е. эта опция включена по дефолту
Проблема решается в 95% случаев путем перезагрузки ADSL модема.
Теперь собственно мой вопрос. Я могу сделать какую-нибудь сторожевую собаку, которая будет проверять лог на предмет этой ошибки и дальше хотелось бы удаленно перезагрузить модем. На модеме стоит тоже линукс, поддерживается логин через ssh и telnet. Как его перезагрузить...?
Один вариант мне видится таким --- создать специального юзера и сделать ему логин-шелл=/sbin/reboot , но честно говоря это означает модификацию прошивки модема, к чему я морально не готов...
В идеале хотелось бы что то вроде удаленного sh -c , но ничего подобного не могу найти
P.S. Провайдер --- стрим, ADSL модем Dlink DSL-500T, wl500gP (7g)