Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 0
  0   
								
								Нужен скрипт, который бы в убунте определял ее айпишник и допустим с некоторой периодичностью его отсылал бы на почту.
времени мало, поэтому хочется точно знать, чем воспользоваться.
Офлайн
 
							 0
  0   
								
								а чем не подходит no-ip.com и аналогичные решения?!
Офлайн
 
							 0
  0   
								
								он работает с ipv6?
Офлайн
 
							 0
  0   
								
								> он работает с ipv6?
врятли.
(у меня ип6 через he.net, там ип6 статический, я к нему домен привязал и не парюсь).
если есть доступ к инету, то можно просто спарсить страничку отсюда http://www.whatismyipv6.net/ и узнать какой у тебя ип6.
import urllib, re
Офлайн
 
							 32
  32   
								
								>который бы в убунте определял ее айпишник
внешний адрес или внутренний?
вы в инет через ipv6 ходите?
Офлайн
 
							 0
  0   
								
								хожу через 4 версию, но узнавать нужно именно 6
и на сколько понимаю ipv6 один и внутренний и внешний.
по крайней мере похоже на то, что миредо так делает.
Офлайн
 
							 32
  32   
								
								Офлайн
 
							 0
  0   
								
								Я писал себе бота для администрирования сервера, и мне надо было периодически получать от него внешний сервачный IP. Бот висит в джаббере и по команде отправляет мне то, что нужно. Вот плагин к боту, который это дело реализует:
# -*- coding: utf-8 -*-
import xmpp
import urllib2
def run(bot, mess):
strURL = 'http://api.wipmania.com/'
f = urllib2.urlopen(urllib2.Request(strURL))
response = f.read()
outerIP = response.split("<br>")[0]
f.close()
bot.send(xmpp.Message( mess.getFrom(), outerIP ))
Отредактировано (Июнь 30, 2010 17:41:59)
Офлайн
 
							 0
  0   
								
								Enchantner, ему надо ип6, а не ип4.
1-й вариант:
(если сменить домен на ipv4.whatismyipv6.net, то так определится ип4).
# cofing: utf-8
import urllib, re
def my_ipv6():
"""Возвращает IPv6-адрес (используется ipv6.whatismyipv6.net)."""
url = "http://ipv6.whatismyipv6.net/"
tmp = urllib.urlopen(url).read()
my_re = re.compile(r"<h1>(.*?)</h1>")
tmp = re.findall(my_re, tmp)
tmp = tmp[0].split(" ")
tmp = tmp[-1]
return tmp
print my_ipv6()
>>> import netifaces
>>> dir(netifaces)
['AF_APPLETALK', 'AF_ASH', 'AF_ATMPVC', 'AF_ATMSVC', 'AF_AX25', 'AF_BLUETOOTH', 'AF_BRIDGE', 'AF_DECnet', 'AF_ECONET', 'AF_FILE', 'AF_INET', 'AF_INET6', 'AF_IPX', 'AF_IRDA', 'AF_ISDN', 'AF_KEY', 'AF_LINK', 'AF_NETBEUI', 'AF_NETLINK', 'AF_NETROM', 'AF_PACKET', 'AF_PPPOX', 'AF_ROSE', 'AF_ROUTE', 'AF_SECURITY', 'AF_SNA', 'AF_UNIX', 'AF_UNSPEC', 'AF_WANPIPE', 'AF_X25', '__doc__', '__file__', '__name__', 'ifaddresses', 'interfaces']
>>> netifaces.interfaces()
['lo', 'eth0', 'wmaster0', 'wlan0', 'ppp0', 'vboxnet0', 'sit0', 'he-ipv6']
>>> netifaces.ifaddresses("eth0")
{17: [{'broadcast': 'ff:ff:ff:ff:ff:ff', 'addr': '00:16:d4:4d:3d:2f'}], 2: [{'broadcast': '192.168.1.255', 'netmask': '255.255.255.0', 'addr': '192.168.1.2'}], 10: [{'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::216:d4ff:fe4d:3d2f%eth0'}]}
>>>
from socket import socket, SOCK_DGRAM, AF_INET, AF_INET6
s = socket(AF_INET, SOCK_DGRAM)
s.connect(('google.com', 0))
print "my ipv4 - ", s.getsockname()
s = socket(AF_INET6, SOCK_DGRAM)
s.connect(('ipv6.google.com', 0))
print "my ipv6 -", s.getsockname()
Отредактировано (Июнь 30, 2010 20:22:23)
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)