Форум Рідного Міста

Як дізнатись СВІЙ адрес IP?

Андрій Моравський - 1-3-2008 у 19:46

Вихідні дані:
Windows'и XP
динамічний IP (для машини яка контролюватиметься)
підключення до UARNet по PPPoE через сервер-шлюз по радіо каналу. Прикожному підключенні дається інший IP.

Задача:
Як дізнатися свій поточний IP програмним чином (як це робить ipconfig) і скинути його не мейл? може хтось має які думки?

думки:...
....почну з того що PERL'ом закинути на мило не буде важко, думаю в ному ж є якийсь модуль який покаже і поточну IP-шку... а то натикаюсь хіба що на "IP удальонного пользоватєля..." в скриптах CGI... яке мені не тре хоч би там шо. Хто які думки має, Панове?
....по друге.. як цей перл-скрипт (чомусь мене потягнуло на перл, бо з ним мав до справи колись і знаю його частково, бачу що в ному можна вирішити цю проблему начебто...)... отож... як цей перл скрипт запустити у Windows ПІСЛЯ підконекчення до Уарнету (воно при старті машини в мене автоматичне).... (планувальник недоступний юзер безпарольний...)

до речі цей весь сирбор робиться для того щоб віддалено контролювати машину по IP. Гадаю зрозуміло...можливо буде на ній FTP-шка..

ну суть задачі - ЯК ДІЗНАТИСЬ СВІЙ IP. перлом чи не перлом... може BAT-ом... чи ін.

ВЕЛЬМИ ВДЯЧНИЙ!

Ярема П. - 1-3-2008 у 22:11

А чому не можна скористатися http://www.dyndns.com/ ? Там же є купа програм, які після виходу машини в ефір перевіряють адрес айпі, і якщо помінявся, то відразу прописують його певній адресі, яку перед тим вибирається. Зручно, не треба пам'ятати адрес айпі, а лиш символьну адресу, типу lialalal.dyndns.org або lialalia.homelinux.net чи ще якось.

Тарас Капущак - 2-3-2008 у 20:00

Можна так:
Код:
$name = (gethostbyname ("localhost"))[0];
$addr = (gethostbyname ($name))[4];
printf "%s\n", join ('.', unpack ("C4", $addr));


(джерело: http://www.cygwin.com/ml/cygwin/1998-05/msg00124.html )

Тарас Гулка - 2-3-2008 у 22:17

В методі запропонованому Тарасом є один ньюанс. Я не знаю як відбувається підключення через радіо-канал, але у випадку PPPoE з'єднання через АДСЛ-модем такий метод не спрацює. Динамічну адресу отримує модем, а далі передає нет вже до ПК, який у свою чергу має зовсім іншу, локальну адресу.
Маю підозру, що у випадку радіо-каналу буде така сама ситуаці.

Одним із виходів є наступний простий метод (але цей метод потребує розміщення скріпта на зовнішньому сайті). Одже:
1. пишем скрипт визначення ІР клієнта який доступається до веб-сторінки.
наприклда, на ПХП це можна зробити так:
$ip = getenv ("REMOTE_ADDR");

// далі дописуєм відсилання адреса на певну адресу

2. Розміщуєм цей скріпт на якомусь сервері, наприклад, http://.................com/ip.php

Загалом все. Тепер якщо запустити файл за цією адресою то відповідно скрипт зчитає ІР адресу компа з якого був здійснений доступ до веб-сторінки і відправить на задану адрусу. Якщо це діло треба автоматизувати, то :

3. створюємо bat-файл в якому пишем одну стрічку:
explorer.exe http://.................com/ip.php
4. запускаєм bat файл. В результаті запуститься скрипт.