LINUX.ORG.RU

Скрипт для перезагрузки домашнего маршритизатра


0

0

Привет. Вот такой вот ботва:

DSL-пров стабильно 4 раза в день рвёт соединение, 3 из них — это биллинг, а один, в час ночи, якобы становится ночная неограниченная скорость 8 мбит/с (или сколько там dsl выжимает :)) Так вот, три раза маршрутизатор переподнимает соединение, всё нормально, но в час ночи, не хочет или не могёт :) умирает процесс pppd.

Идея заключается в том, чтобы нацарапать маленький скриптик, который перегружал бы маршрутизатор, скажем, в 1:05, и засунуть его в cron.

Имеем: модем D-link 500t и dropbear ssh-server

Какие мне видятся варианты:

1. Сделать пустым пароль на admin'а и перезапускать ssh -l admin gw (будет ли запрошен ввод пустого пароля, нажать enter?)
НО ни через web-морду, ни через passwd не получается сделать пароль пустым.

2. Передать параметр --password openssh клиенту. Погуглив, вроде, пробегал где-то патч в списке рассылок.
Отпадает — слишком сложно.

3. Использовать curl или expect, какие-то обвязки из perl'а.
expect -c 'spawn ssh admin@192.168.1.1 ; expect assword ; send «admin\n» ; interact'
Ниасилил как передать команду :)

Пока писал, паралельно гуглил и нашёл элегантное решение:
http://www.dd-wrt.com/wiki/index.php/Telnet/SSH_and_the_Command_Line#Automati...

устанавливаем dropbear клиент и через переменную окружения

DROPBEAR_PASSWORD='admin' dbclient -l admin gw reboot

Поэтому всё таки создам тему — может кому пригодится :)

Ногами сильно не пинайте — как это дело в cron засунуть :)






Хм, если модем подключен стабильно к одному компьютеру, то можно перевести его в бридж, а pppoe сессию поднимать с компа, не? Заодно нагрузка на модем снизится.

unikoid ★★★ ()

>Ниасилил как передать команду :)

Если не работает «ssh admin@192.168.1.1 reboot», то можно ваять большой expect скрипт как здесь: http://wl500g.info/showthread.php?t=9292

Ногами сильно не пинайте — как это дело в cron засунуть :)

Это вопрос или повод? Как создать файл с bash-скриптом, сделать его исполняемыми и отредактировать crontab :)

mky ★★★★★ ()
Ответ на: комментарий от xorik

ЮТК. Прошивка Firmware Version : V2.01B01T01.RU.20060620

Вроде последняя http://ftp.dlink.ru/pub/ADSL/DSL-500T/Firmware/ADSL2_plus/

Правда, есть ещё AnnexM http://ftp.dlink.ru/pub/ADSL/DSL-500T/Firmware/ADSL2_plus/AnnexM/ от 14 июня 2008. Это что такое? СтОит прошивать?

> прошивка от аккорпа

Это где? Какие преимущества?

Кстати, ты не заморачивался с приоритезацией трафика? Я у себя обнаружил tc.

Пробовал проши от mccbat'а?

anton_jugatsu ★★★★ ()
Ответ на: комментарий от mky

пока не было повода поразбираться с cron'ом, поэтому и спросил :)

Да ладно сам разберусь :)

За ссылку спасибо!

anton_jugatsu ★★★★ ()

> Ниасилил как передать команду :)

s/Ниасилил/Поленился поискать :)

anton_jugatsu ★★★★ ()
Ответ на: комментарий от anton_jugatsu

>Это где? Какие преимущества?
Это было года 3 назад, уже не помню где брал, но ставил для того чтобы 2 коннекта держать (раньше были отдельные соединения для внутренних ресурсов провайдера и для инета, потом объединили).

Кстати, ты не заморачивался с приоритезацией трафика? Я у себя обнаружил tc.

Не заморачивался. Что значит tc?

Пробовал проши от mccbat'а?

Неа, прошил давно и забил

Кстати, если интересуешься, вот почитай: http://habrahabr.ru/blogs/hardware/83556/

xorik ★★★★★ ()
Ответ на: комментарий от mky

а как перезагрузить при помощи curl?

# cat /usr/www/html/tools/restartmodem.htm

<html>
<head>
<meta http-equiv=«Content-Type» content=«text/html; charset=iso-8859-1»>
<link rel=«stylesheet» href="../html/css/alpha.css" type=«text/css»>
<script language=«JavaScript» src="../html/js/menu1.js"></script>
<script>
function callset()
{
if(document.getElementById(«uiPostrestart»).value == 1)
{
<? if eq $var:com restart `document.getElementById(«uiPostVarName»).name = «logic:command/reboot»;`
'document.getElementById(«uiPostVarName»).name = «logic:command/defaults»;' ?>
document.getElementById(«uiPostrestart»).value = 0;
document.getElementById(«uiPostForm»).submit();
}
<? if eq $var:com restart
`setTimeout('document.location.href=«http://<? query lan0:static:settings/ip ?>/cgi-bin/webcm?getpage=../html/index.html»', 70000);`
`<? if eq $var:ip restore `setTimeout('top.location.href=«http://<? query lan0:static:settings/ip ?>/cgi-bin/webcm?getpage=../html/index.html»', 70000);`
`setTimeout('document.location.href="../html/index.html"', 35000);` ?>` ?>
}

</script>
</head>
<body topmargin=20 onload=«callset()»>
<script type='text/javascript'>
mainTableStart();
MapContent();
logo();
secondRow();
ThirdRowStart();
//Write_Item_Images();//left area
ThirdRowEnd();
inTableStart();
</script>

<table width=540px border=0 cellpadding=0 cellspacing=0 align=top height=«500px»>

<tr>
<td colspan=6 height=«40» nowrap class=«tabhead»>Restarting...</td>
</tr>

<tr>
<td class=«tabdata» height=«50»>The system is now restarting. Please wait.</td>
</tr>

<tr><td colsapn=«6»></td></tr>
</table>





<script type='text/javascript'>
inTableEnd();
mainTableEnd();
</script>

<form method=«POST» action=«webcm» target=«fPanel» id=«uiPostForm» >

<input type=«hidden» name=«getpage» id=«pagename» value="../html/tools/restartmodem.htm">
<input type=«hidden» name=«var:restart» value=«<? echo $var:restart ?>» id=«uiPostrestart»>
<input type=«hidden» id=«uiPostVarName» name=«» value=«»>

</form>

</body>
</html>

anton_jugatsu ★★★★ ()
Ответ на: комментарий от xorik

# ls -l sbin/tc -rwxr-xr-x 1 504 500 146924 Jun 20 2006 sbin/tc

приоритет трафика можно настраивать

anton_jugatsu ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.