Найти - Пользователи
Полная версия: C чего начать?
Начало » Python для новичков » C чего начать?
1
Norecces
Нужен скрипт, который бы в убунте определял ее айпишник и допустим с некоторой периодичностью его отсылал бы на почту.
времени мало, поэтому хочется точно знать, чем воспользоваться.
ta
а чем не подходит no-ip.com и аналогичные решения?!
Norecces
он работает с ipv6?
ta
> он работает с ipv6?
врятли.
(у меня ип6 через he.net, там ип6 статический, я к нему домен привязал и не парюсь).
если есть доступ к инету, то можно просто спарсить страничку отсюда http://www.whatismyipv6.net/ и узнать какой у тебя ип6.

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

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


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

а локальный можно просто распарсить результат ifconfig и отправить по почте.
вот получение результата
тут и
тут примеры отправки писем
Enchantner
Я писал себе бота для администрирования сервера, и мне надо было периодически получать от него внешний сервачный 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 ))
ta
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. переименуйте тему
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB