Страница 1 из 1

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

Добавлено: 23 янв 2009, 17:42
Dark_Sarmat
народ, помогите пожалуйста написать скрипт для перезагрузки модема.
Есть модем zyxel P660R-T1 время от времени он подвисает, как правило после 2х суток непрерывной работы.
Может кто знает как написать скрипт, который бы запускался по cron и выполнял следующее:
подключался к модему по telnet давал ему команду на перезагрузку, а потом, через несколько минут, пинговал определенный хост. Если пинг есть, то все замечательно если нет, снова перезагружал модем.

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

Добавлено: 23 янв 2009, 17:44
Dark_Sarmat
Скорее 2 скрипта, оба загружаются по крону
1-й перезагружает модем
2-й пингует хост, если пинг не прошел, то запускает 1й скрипт

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

Добавлено: 23 янв 2009, 19:34
leave
Не знаю, как с телнетом, но с ssh возможно следующее:

Код: Выделить всё

ssh user@host reboot

ессно сначала ключик надо
по идее, telnet тоже должен подобное уметь
пароль в параметрах передавать придется :(

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

Добавлено: 24 янв 2009, 12:39
Dark_Sarmat
Я нашел скрипты под винду на VBS вопрос в том, как их под линуху переделать.

Код: Выделить всё

On Error Resume Next

strComputer = "."
strTarget = "turbo.uralcom.com" 'IP address or hostname
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery _
 ("Select * From Win32_PingStatus where Address = '" & strTarget & "'")
If Err = 0 Then
  Err.Clear
  For Each objPing in colPings 'избавиться от форича
    If Err = 0 Then
      Err.Clear
      If objPing.StatusCode = 0 Then
      ' если статус = 0, пустая строка - другое
      Else
      Set oShell = WScript.CreateObject("WScript.Shell")
      oShell.Run "telnet.exe 192.168.1.1"
      WScript.Sleep 1000
      oShell.SendKeys "user" & chr(13)
      WScript.Sleep 1000
      oShell.SendKeys "password" & chr(13)
      WScript.Sleep 1000
      oShell.SendKeys "reboot" & chr(13)
      End If
    Else
      Err.Clear
      WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."     
    End If
  Next
Else
  Err.Clear
  WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If

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

Добавлено: 25 янв 2009, 11:56
Llama
man expect

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

Добавлено: 25 янв 2009, 13:18
Kornelius
Боюсь man expect ему может не помочь :)
Лучше уж тогда давать: http://ru.wikipedia.org/wiki/Expect

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

Добавлено: 26 янв 2009, 03:04
Dark_Sarmat
Если я понял правильно, то этой штукой можно что угодно по телнету делать. Сейчас набросал скриптик. Приду вечером домой и заценю как работает.

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

Добавлено: 30 янв 2009, 20:15
bazil
Можете копать в этом направлении

telnetRebootModem.sh

Код: Выделить всё

#!/bin/sh
DELAY=0.2s
MODEM="192.168.1.1"
USER="admin"
PW="1234"

echo "open $MODEM"
sleep $DELAY
echo "$USER"
sleep $DELAY
echo "$PW"
sleep $DELAY
echo "$PW"
sleep $DELAY
echo "reboot"
echo "close"


потом в кроне каждую минуту
ping -c 1 -W 1 tut.by || (/path/to/telnetRebootModem.sh | telnet)

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

Добавлено: 12 фев 2009, 16:28
Dark_Sarmat
Всем спасибо.
Нашел универсальное и изящное решение проблемы.
Как только статью в блоге допишу повешу тут ссылку

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

Добавлено: 27 май 2009, 00:44
Dark_Sarmat
Вот и сама статья: http://www.ionline.by/administrirovanie/skripty/skripty-perezagruzki-modema-16-07-2012/
Вам, народ, должна понравиться. Средство универсальное, позволяет через telnet или ssh админить или регулярно делать повторяющиеся действия.

Наджеюсь народ не осудит строго, это моя первая серьезная статья.

Re: Скрипт для перезагрузки модема -- инструкция

Добавлено: 23 фев 2013, 13:49
Dark_Sarmat
В дополнение к вышесказанному, вот тут в файловом архиве несколько готовых скриптов: http://www.ionline.by/fajlovyj-arxiv/