Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Периодическое определение WAN адреса ADSL модема! (http://forum.oszone.net/showthread.php?t=164858)

Dump 27-01-2010 14:56 1331405

Периодическое определение WAN адреса ADSL модема!
 
Вот задача! Есть модем ADSL TP-LINK TW-8101(по-моему:))
У него есть web интерфейс(запрашивает авторизацию), есть telnet (запрашивает авторизацию)!!
Нужно с периодичностью раз в пол-часа, проверять WAN адрес модема, и отправлять его по почте, если он не совпадает с последним, ну или постоянно отправлять по почте!
Информацию думаю можно взять либо с web интерфейса, либо через телнет, либо вобще с левого сайта который определяет IP!
Как бы всё это в жизнь воплотить! Например если на странице http:\\192.168.1.1\adslinfo\wan , есть строка IP address: 000.000.000.000 ! Но страница запрашивает учётку, к примеру admin/admin !
Ну и как всё это по почте выслать, например через учётку на маиле или на гугле!

madmasles 27-01-2010 17:53 1331557

Dump,
Честно говоря, я не совсем понял что Вам надо, если Ваш текущий IP-адрес, то вот пример из русской справки:

Код:

#include <Inet.au3>
$PublicIP = _GetIP()
MsgBox(0, "IP Address", "Your IP Address is: " & $PublicIP)


NewOLDi 27-01-2010 19:44 1331628

_GetIP () зависит от стороннего ресурса. Т.е. надёжность под сомнением, к сожалению.

Быть может есть вариант выдрать текущий IP у модема (роутера) посредством telnet (в фоновом режиме конечно же)?

madmasles 27-01-2010 19:58 1331636

NewOLDi,
Если Вы не доверяете библиотечным функциям (на мой взгляд зря не доверяете), то вот Вам код от CreatoR
Код:

#include <Inet.au3>

$StringIP = _INetGetSource("http://www.shrum.net/getip.php")
MsgBox(64, "", "The IP is: " & $StringIP)

Источник

PS
По-моему, IP-адрес присваивает провайдер, т.е. без стороннего ресурса все равно не обойтись (может быть я ошибаюсь.)

PPS
Посмотрел в Inet.au3 функцию _GetIP(). Она делает то же самое, только с адреса http://checkip.dyndns.org/?rnd1=

kaster 28-01-2010 09:34 1332042

madmasles, я думаю, автор под сторонними ресурсами понимает как раз эти сайты. но если уж озадачиться телнетом, то можно запускать telnet.exe в фоновом режиме, предварительно взяв управление над StdOut потоком и парсить ответ, то тоже должно помочь.
если с реализацией алгоритма возникнут проблемы, пиши.

NewOLDi 28-01-2010 10:53 1332136

kaster абсолютно прав, я действительно сомневаюсь в безотказности сторонних ресурсов (Инет-сайты, которые отдают твой IP-адрес). А библиотечные функции я ооочень люблю, Вы даже не представляете как!

На эту тему вспомнил анекдот:
Цитата:

- Папа, почему ты пьёшь пиво из бутылки?
- Я не люблю посредников!
:)

Сегодня постараюсь опросить свой ADSL Zyxel на предмет внешнего IP в фоне через telnet. Если получится - выложу код сюда.

kaster 28-01-2010 11:29 1332171

NewOLDi, боюсь именно telnet.exe от МС не получится. т.к. он то ли не дает доступ к своему потоку I/O, то ли использует какой-то особый, не опознаваемый AutoIt, вобщем не дает управлять. на оф. форуме тоже так пишут. единственное отправлять команды через send, но тогда про фон можно забыть. или юзать сторонние утилиты аля telnet. в голову пришло только Console telnet.

madmasles 28-01-2010 12:02 1332209

2 All ?

Правой кнопкой мыши по значку сети в трее см. прикрепленный скрин.
Это я к тому, что в системе где-то прописан IP-адрес, но где? Это вопрос к гуру.

NewOLDi 28-01-2010 12:40 1332241

kaster, это печально :(

madmasles, если используется полноценный ADSL роутер, то операционная система не в состоянии показать реальный внешний IP-адрес; дальше локального адреса Вашей сетевой карты и локального адреса Вашего роутера ОС уйти не может. Ваш пример основан на обычном ADSL USB модеме, там всё проще...

kaster 28-01-2010 12:41 1332246

madmasles, это не всегда так, особенно если между внешним инетом и клиентом несколько маршрутизаторов/мостов. хотя, в случае именно одного роутера (а только в этом случае можно считать что опрошенная инфа будет действительно внешним ИП) можно делать и так. в противном случае, только внешний ресурсы. как вариант, могу еще посоветовать вот этот сайт http://tools.whois.net/yourip/ - его надежность вне всяких сомнений. думаю по домену догадаетесь почему

madmasles 28-01-2010 12:49 1332255

kaster,
А в моем случае можно получить IP-адрес? И, если можно, то как?

NewOLDi 28-01-2010 12:52 1332261

madmasles, ipconfig /all :)

madmasles 28-01-2010 12:59 1332266

NewOLDi,
Туплю. :sorry:

El Scorpio 29-01-2010 07:07 1333106

Цитата:

Цитата Dump
Нужно с периодичностью раз в пол-часа, проверять WAN адрес модема, и отправлять его по почте, если он не совпадает с последним, ну или постоянно отправлять по почте! »

Как я понимаю, кому-то на просторе интернетов нужно знать IP-адрес (для доступа к внутренним ресурсам сети и т.д.).
Собственно говоря,*стандартным решением этой проблемы вроде бы как является DynDNS , поддержка которого есть даже на более дешёвых устройствах. Придумать красивое имя и сообщить его нужным людям,*чтобы они не мучились со вводом изменяющегося IP-адреса.

NewOLDi 29-01-2010 09:11 1333173

El Scorpio, я думаю, об этом и подобных сервисах известно всем. Мы тут пытаемся средствами AutoIt выдернуть IP без использования посредников. Пока безуспешно, у меня всё остановилось на том, что AutoIt не способен читать вывод MS Telnet :(

Dump 29-01-2010 13:38 1333405

Простите за долгое отсутствие.....на работе упал DC, так что не до скриптов было!
Так вот!
El Scorpio, помоему я слышал про DynDNS, не очень хорошие отзывы, но спасибо, возьму на заметку!
NewOLDi, Да хочется, очень хочется, средствами AutoIT!
Только я вот думаю, зачем telnet! У модема есть свой http сервер! И есть строка в меню Status: WAN: ххх.ххх.ххх.ххх ! Вот эту строку можно как то вытащить с помощью AutoIT _INetGetSource ????
Но предварительно нужно авторизоваться!!!
А если запрашивать адрес вида http://192.168.1.1/stataus/?user=admin&pass=admin ну что-то вроде этого, как там запрос строится, нужно взглянуть! Модема под рукой нет, он дома! Тогда авторизация по идее не нужна. Или я наивный ? :))))


Приведенный выше код с _GetIp() походу спотыкается на проксе!


Время: 01:25.

Время: 01:25.
© OSzone.net 2001-