Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 30, 2010 11:03:12

Norecces
От:
Зарегистрирован: 2010-04-13
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

C чего начать?

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



Офлайн

#2 Июнь 30, 2010 11:07:47

ta
Зарегистрирован: 2009-12-15
Сообщения: 90
Репутация: +  0  -
Профиль   Отправить e-mail  

C чего начать?

а чем не подходит no-ip.com и аналогичные решения?!

Офлайн

#3 Июнь 30, 2010 11:13:11

Norecces
От:
Зарегистрирован: 2010-04-13
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

C чего начать?

он работает с ipv6?



Офлайн

#4 Июнь 30, 2010 13:40:41

ta
Зарегистрирован: 2009-12-15
Сообщения: 90
Репутация: +  0  -
Профиль   Отправить e-mail  

C чего начать?

> он работает с ipv6?
врятли.
(у меня ип6 через he.net, там ип6 статический, я к нему домен привязал и не парюсь).
если есть доступ к инету, то можно просто спарсить страничку отсюда http://www.whatismyipv6.net/ и узнать какой у тебя ип6.

import urllib, re

Офлайн

#5 Июнь 30, 2010 14:59:38

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

C чего начать?

>который бы в убунте определял ее айпишник
внешний адрес или внутренний?

вы в инет через ipv6 ходите?

Офлайн

#6 Июнь 30, 2010 15:14:50

Norecces
От:
Зарегистрирован: 2010-04-13
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

C чего начать?

хожу через 4 версию, но узнавать нужно именно 6


и на сколько понимаю ipv6 один и внутренний и внешний.
по крайней мере похоже на то, что миредо так делает.



Офлайн

#7 Июнь 30, 2010 17:12:25

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

C чего начать?

т.к. в инет через 4, то и внешний будет 4 версии.

а локальный можно просто распарсить результат ifconfig и отправить по почте.
вот получение результата
тут и
тут примеры отправки писем

Отредактировано (Июнь 30, 2010 17:13:17)

Офлайн

#8 Июнь 30, 2010 17:40:33

Enchantner
От:
Зарегистрирован: 2009-02-11
Сообщения: 442
Репутация: +  0  -
Профиль   Отправить e-mail  

C чего начать?

Я писал себе бота для администрирования сервера, и мне надо было периодически получать от него внешний сервачный 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)

Офлайн

#9 Июнь 30, 2010 19:04:49

ta
Зарегистрирован: 2009-12-15
Сообщения: 90
Репутация: +  0  -
Профиль   Отправить e-mail  

C чего начать?

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()
2-й вариант:
(“netifaces” - http://pypi.python.org/pypi/netifaces/ )
>>> 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'}]}
>>>
3-й вариант:
вот ещё нарыл http://ubuntuforums.org/showthread.php?t=877864

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()
p.s. переименуйте тему

Отредактировано (Июнь 30, 2010 20:22:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version