PDA

Показать полную графическую версию : Как организовать обмен данными об ip ?


mitiya
24-02-2009, 11:28
Есть сеть провайдера, в ней ip и dns имена динамические и соответственно меняются иногда.
Есть 2 "сервочка" (2 старых компа на Xp).

mitiya
24-02-2009, 11:35
Обмен ip думаю организовать исходя из того что вряд ли у 2х компов ip сменится одновременно, по-этому предполагается периодически посылать "свой" ip на другой.

Как получить ip это понятно, а вот как отправить это как раз и вопрос.
Была мысль использовать Net send, но во-первых он работает через раз, во-вторых сообщение выводится в окне и я не знаю как его отловить.

Так же была мысль записывать просто файл в расшариную папку удаленного компа,

но тут есть еще проблема из этой сети постоянно прут всякие кулхацкеры и по-этому я перекрыл все порты, не хотелось бы открывать порт виндовых шар.

Так что вот собственно не проч бы совет получить по поводу реализации этого дела :)

Прошу прощение за то что написал все это несколькими постами , но у меня какой-то глюк , все время выдает ошибку когда весь пост целиком хочу вставить :(

kim-aa
24-02-2009, 13:15
Как получить ip это понятно, а вот как отправить это как раз и вопрос. »

Нужен промежуточный сервер.
Рекомендую использовать почтовую систему, например gmail.com
Для обмена использовать почтовых клиентов командной строки.
Для получения типа popcorn
Для отправки типа sendfile

Можно воспользоваться более навороченной утилитой командной строки: postie. Поддерживает много функций, в том числе и PGP.

mitiya
24-02-2009, 14:52
Нет через интернет не годится, ибо на одном из компов нет инета.
Может мне поднять почтовые сервера на обоих компах. А лучше бы какой-нибудь консольный месенджер для локальной сети, лучше бы сидящей на своем порте, а не использующий туже net send

kim-aa
24-02-2009, 19:09
Нет через интернет не годится, ибо на одном из компов нет инета. »

Тогда
- читаем http://forum.oszone.net/announcement-31-75.html
- рисуем схему сети с адресами
- мы смотрим
- и предлагаем решения

mitiya
25-02-2009, 09:06
В том-то и дело что нет в общем-то никакой схемы, есть 2 компа подключенных к сетке провайдера, но сам инет этого провайдера они не используют, так что слово провайдер здесь только для обозначения того что сеть-то чужая со своими настройками на которые я повлиять никак не могу.

То есть есть 2 кома подключенных к некой сетке в которой ip и dns имена раздаются автоматически и периодически меняются, и мне нужно чтоб эти 2 компа сообщали друг другу свой ip при изменении вот и все.

И в моем распоряжении только эти 2 компа больше нигде никаких изменений я делать не могу.

ab57
25-02-2009, 13:38
Если в вашей сети можно отправить широковещательный пакет, то можно попробовать netcat. Он пришел из юниксов, но есть версии под Windows.
Позволяет создать из командной строки соединение клиент - сервер с заданными параметрами.
Идея такая, на каждой из машин создается сервер, слушающий какой нибудь нестандартный порт, на каждой свой. Клиент не знает адрес сервера, сервер не знает адрес клиента. Поэтому клиент должен отправлять, например UDP-пакет на этот, слушаемый сервером порт и на широковещательный адрес.

Сервер, слушающий (UDP 65000 к примеру) создается командой nc.exe с ключем -l.

nc.exe -l -u -p 65000 -o log.txt

-u - протокол UDP, -p - номер порта. Выполняется запись дампа соединения в файл log.txt.
Клиент создает текстовый файлик, содержащий IP, например командой
ipconfig /all > ipconfig.txt
и выполняет подключение к серверу, адрес которого является широковещательным адресом для вашей подсети (например - 192.168.0.255). Лучше это сделать одним bat-файлом:
ipconfig /all > ipconfig.txt

nc.exe -p 65001 -u -n 192.168.0.255 65000 < ipconfig.txt

-p 65001 - это будет порт клиента, можно не задавать, но иногда полезно, для фильтрации трафика и т.п.
После выполнения этой команды, на сервере вы получите ipconfig клиента, где найдете его ip.
Это так, грубая схема, нужно будет слегка облагородить, создать правила фильтрации, возможно, использовать планировщик, и не закрывать сокет на сервере после соединения (ключ -L вместо -l)...

mitiya
26-02-2009, 00:20
ab57, Это примерно то что я и предполагал, но у меня тут пару вопросов :
1 честно говоря не я не в курсе относительно того как должен выглядеть широковещательный адрес для сети с маской не 255,255,255,0
2 после команды nc.exe -p 65001 -u -n 192.168.0.255 65000 < ipconfig.txt приложение не завершается , как его завершить ?
3 в log.txt попадает еще куча всякой бинарной тарабарщины среди которой довольно трудно найти то что нужно , но это на самом деле на такая уж и проблема, но все же.

ab57
26-02-2009, 10:43
1 честно говоря не я не в курсе относительно того как должен выглядеть широковещательный адрес для сети с маской не 255,255,255,0 »
1. Можно использовать ipconfig /all
Например
IP=10.10.22.1
маска 255.255.0.0 (нули в маске определяют биты изменяющегося диапазона адресов, номер сети и широковещательный адрес)

То широковещательный адрес - 10.10.255.255
маска- 255.255.255.0 - широковещатеоьный адрес 10.10.22.255
2 после команды nc.exe -p 65001 -u -n 192.168.0.255 65000 < ipconfig.txt приложение не завершается , как его завершить ? »

2. Попробуйте использовать ключ -w (-w 5 - отключиться через 5 секунд, подберите сколько вам нужно - вдруг не хватит на передачу ipcofig.txt)
3 в log.txt попадает еще куча всякой бинарной тарабарщины среди которой довольно трудно найти то что нужно , но это на самом деле на такая уж и проблема, но все же. »

3. log.txt - это шестнадцатиричный дамп, если не подходит, попробуйте простое перенаправление вывода netcat в файл, вместо -o используйте > Тогда получите копию ipconfig /all в файле log.txt
nc.exe -l -u -p 65000 > log.txt

mitiya
26-02-2009, 21:53
чего-то не перенаправляется в файл, log.txt пустой остается.
и компы в разных сегментах сети находятся как оказалось.

сделал трейс, получилось вот что
чего-то не перенаправляется в файл, log.txt пустой остается.

и компы в разных сегментах сети находятся как оказалось.
10.3.0.1
172.21.144.37
172.21.144.33
172.21.144.46
10.5.18.114

маска кстати 255,255,248,0

ab57
27-02-2009, 11:28
чего-то не перенаправляется в файл, log.txt пустой остается. »
Странно. Проверил, все работает.
На сервере:
nc.exe -l -u -p 65000 > log.txt
На клиенte запустите nc:
nc.exe -u -n IPсервера 65000
после старта наберите любой текст и нажмите ENTER.
В log.txt на сервере должен быть ваш текст, набранный на клиенте.
А поскольку компы в разных сетях, то маловероятно, что IP у них меняются одновременно, поэтому с broadcastom можно не заморачиваться. На каждом из компов поднимаете слушающий "netcat-сервер" и , например, раз в 10 минут планировщиком запускаете скрипт, проверяющий, не изменился ли собственный IP, и если изменился - запустакете netcat-клиент, пересылающий новый IP удаленному netcat-серверу.




© OSzone.net 2001-2012