![]() |
|
![]() |
#1 |
Senior Member
Регистрация: 30.05.2011
Возраст: 51
Сообщений: 291
Вес репутации: 0 ![]() |
![]()
Как правильней будет послать из openwrt команду (reboot) в роутер (192.168.1.1) для его перезагрузки?
У меня сейчас инет по DSL. На Windows в автозагрузке сейчас работает программа со следующим кодом: Код:
; Компилятор - PureBasic 4.51. ProgramFilename.s=ProgramFilename() ; Имя и путь к исполняемому файлу данной программы ProgName.s=GetFilePart(ProgramFilename) a = CreateSemaphore_(#Null,0,1,@ProgName) ; Если прога уже запущена, то завершаем работу этой копии программы. If a<>0 And GetLastError_()=#ERROR_ALREADY_EXISTS MessageRequester(ProgName, "Программа уже запущена", #MB_OK|#MB_ICONWARNING) CloseHandle_(a) End EndIf InitNetwork() Procedure.s SendModemData(Connect, Command.s) Protected Result.s="", Count=0, x Command=Command+Chr(13)+Chr(10) SendNetworkData(Connect, @Command, Len(Command)) Repeat Delay(20) If NetworkClientEvent(Connect)=#PB_NetworkEvent_Data *mem=AllocateMemory(10000) If *mem ReceiveNetworkData(Connect,*mem,10000) In.s=PeekS(*mem) FreeMemory(*mem) Result=Result+In EndIf EndIf Count+1 Until Count>=80 ProcedureReturn Result EndProcedure Procedure RestartModem() Connect=OpenNetworkConnection("192.168.127.1", 23) If Connect Delay(100) SendModemData(Connect, "admin") ; Логин модема. Delay(1000) SendModemData(Connect, "admin") ; Пароль модема. Delay(1000) SendModemData(Connect, "reboot") ; Команда перезагрузки модема. Delay(4000) CloseNetworkConnection(Connect) EndIf EndProcedure Repeat Delay(30000) ; 30 секунд ожидания. x1=0 : x2=0 Connect=OpenNetworkConnection("www.google.com", 80) If Connect x1=1 CloseNetworkConnection(Connect) EndIf Delay(1000) Connect=OpenNetworkConnection("www.ya.ru", 80) If Connect x2=1 CloseNetworkConnection(Connect) EndIf If x1=0 And x2=0 RestartModem() For i=1 To 20 Delay(10000) ; 200 секунд ожидания. Необходимо чтобы модем успел перезагрузиться. Next i EndIf ForEver Последний раз редактировалось St@rz; 22.05.2013 в 12:36. |
![]() |
![]() |
![]() |
#2 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Можно SH скрипт написать
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Регистрация: 30.05.2011
Возраст: 51
Сообщений: 291
Вес репутации: 0 ![]() |
![]()
Вот так вроде бы должен работать, но не работает:
Код:
#!/bin/bash host="192.168.1.1" user="admin" pass="admin" pathping=`which ping` pathexpect=`which expect` for ((;;)) { $pathping -c 1 google.com if (( $? != 0 )) then $pathexpect -c "spawn ssh $user@$host; expect "password:"; send \"$pass\r\"; expect "#"; send \"reboot\r\"; expect eof" fi sleep 10s } Добавлял выполнять задание тоже каждые 5 минут: echo "*/5 * * * * /bin/tester.sh" >> /etc/crontabs/root Что нужно исправить в скрипте? expect в openwrt не нашел. Последний раз редактировалось St@rz; 22.05.2013 в 18:24. |
![]() |
![]() |
![]() |
#5 |
Senior Member
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1606 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Код:
#!/bin/sh { sleep 5 echo admin sleep 3 echo admin sleep 3 echo reboot sleep 5 echo exit } | telnet 192.168.1.1 >/dev/null exit 0 |
![]() |
![]() |
![]() |
#6 |
Senior Member
Регистрация: 30.05.2011
Возраст: 51
Сообщений: 291
Вес репутации: 0 ![]() |
![]()
andr128, спасибо огромное!!! Работает.
Код:
#!/bin/sh if (! ping -c 3 ya.ru >/dev/nill 2>&1) then { sleep 5 echo admin sleep 3 echo admin sleep 3 echo adsl start sleep 5 echo exit } | telnet 192.168.1.1 >/dev/null exit 0 else echo 'ping ok' fi Еще раз спасибо!!! Последний раз редактировалось St@rz; 23.05.2013 в 21:07. |
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|