Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.05.2013, 12:21   #1
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 51
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию

Как правильней будет послать из 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.
St@rz вне форума   Ответить с цитированием
Старый 22.05.2013, 13:12   #2
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Можно SH скрипт написать
Admin вне форума   Ответить с цитированием
Старый 22.05.2013, 13:37   #3
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 51
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию

Цитата:
Сообщение от Admin Посмотреть сообщение
Можно SH скрипт написать
Вот так вроде бы должен работать, но не работает:
Код:
#!/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.
St@rz вне форума   Ответить с цитированием
Старый 22.05.2013, 20:38   #4
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 51
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию

Получается в моем случае есть только один программный вариант.
St@rz вне форума   Ответить с цитированием
Старый 22.05.2013, 21:14   #5
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1606
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Код:
#!/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
andr128 вне форума   Ответить с цитированием
Старый 23.05.2013, 12:43   #6
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 51
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию

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
Использую команду перезагрузки adsl так как при reboot пропадает связь между локальными компьютерами и интернет восстанавливается дольше.

Еще раз спасибо!!!

Последний раз редактировалось St@rz; 23.05.2013 в 21:07.
St@rz вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 04:04. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика