Python 我需要反转IP地址,但不清楚如何使用IPy)

Python 我需要反转IP地址,但不清楚如何使用IPy),python,Python,这是剧本。我一直试图用粗体修改打印行 ReverseName来自IPy模块。我不清楚如何在这个例子中实现 打印地址。反转名称%addy #!/usr/bin/env python import sys import re try: if sys.argv[1:]: print "File: %s" % (sys.argv[1]) logfile = sys.argv[1] else: logfile = raw_input("Pl

这是剧本。我一直试图用粗体修改打印行

ReverseName来自IPy模块。我不清楚如何在这个例子中实现

打印地址。反转名称%addy

#!/usr/bin/env python
import sys
import re

try:
    if sys.argv[1:]:
        print "File: %s" % (sys.argv[1])
        logfile = sys.argv[1]
    else:
        logfile = raw_input("Please enter a log file to parse, e.g /var/log/secure: ")
    try:
        file = open(logfile, "r")
        ips = []
        for text in file.readlines():
           text = text.rstrip()
           regex = re.findall(r'(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})$',text)
           if regex is not None and regex not in ips:
               ips.append(regex)

        for ip in ips:
           outfile = open("/tmp/blocked_ips_test", "a")
           addy = "".join(ip)
           if addy is not '':
              **print "IP: %s" % (addy)**
              outfile.write(addy)
              outfile.write("\n")
    finally:
        file.close()
        outfile.close()
except IOError, (errno, strerror):
        print "I/O Error(%s) : %s" % (errno, strerror)

由于您已经将各个八位字节捕获为字符串列表,只需反转列表并在点上连接即可。如果您需要.in-addr.arpa。加上后缀,这应该是微不足道的

addy = '.'.join(reversed(ip)) + ".in-addr.arpa.'
如果确实希望使用API,则需要首先将字符串表示形式转换为IPy对象

import IPy
i = IP('.'.join(ip))
addy = i.reverseNames()

由于您已经将各个八位字节捕获为字符串列表,只需反转列表并在点上连接即可。如果您需要.in-addr.arpa。加上后缀,这应该是微不足道的

addy = '.'.join(reversed(ip)) + ".in-addr.arpa.'
如果确实希望使用API,则需要首先将字符串表示形式转换为IPy对象

import IPy
i = IP('.'.join(ip))
addy = i.reverseNames()

如果你想的话,你可以带我去

import IPy
i = IP('.'.join(ip))
addy = i.reverseNames()
这可以帮助您安装库

相反地

addy = ".".join(reversed(ip.split('.'))) +'.in-addr.arpa'

如果你想的话,你可以带我去

import IPy
i = IP('.'.join(ip))
addy = i.reverseNames()
这可以帮助您安装库

相反地

addy = ".".join(reversed(ip.split('.'))) +'.in-addr.arpa'

Python标准库中的ipaddress模块也支持IPv6

from ipaddress import ip_address

print(ip_address("127.0.0.1").reverse_pointer)
print(ip_address("2a03:2880:f10a:83:face:b00c::25de").reverse_pointer)

Python标准库中的ipaddress模块也支持IPv6

from ipaddress import ip_address

print(ip_address("127.0.0.1").reverse_pointer)
print(ip_address("2a03:2880:f10a:83:face:b00c::25de").reverse_pointer)

在日志文件上运行此操作时会发生什么?您希望如何修改打印输出?这是当前输出:IP:10.102.36.38 IP:192.168.100.11 IP:192.168.100.12所需的输出是:IP.100['0.0.0.127.in addr.arpa.'、'1.0.0.127.in addr.arpa.'、'2.0.0.127.in addr.arpa.',这些来自本地主机IP地址127.0.0.1、127.0.0.2等。函数reverseNames将IP转换为DNS反向区域配置。抱歉,但我不清楚您希望打印什么?在上运行时会发生什么您的日志文件?您希望如何修改打印输出?这是当前输出:IP:10.102.36.38 IP:192.168.100.11 IP:192.168.100.12所需的输出是:IP.reverseNames['0.0.0.127.in addr.arpa.'、'1.0.0.127.in addr.arpa.'、'2.0.0.127.in addr.arpa.',这些来自本地主机IP地址127.0.0.1、127.0.0.2等。函数reverseNames将IP转换为DNS反向区域配置。抱歉,但我不清楚您希望打印什么?>>>addy='。JoinReverseded'127.0.0.1'>>>添加'1…0…0…7.2.1'反向八位字节格式的预期结果为1.0.0.127,因此即使没有额外的点,它仍然是wrong@Stoff看起来您的输入与OP的不同,或者可能是我最初误读了他们的代码。预期的输入ip应该是类似于['127','0','0','1'的列表而您的结果看起来像是在裸字符串“127.0.0.1”>>>>addy=”.中传递的。相反的“127.0.0.1”>>>addy“1…0…0…7.2.1”反向八位字节格式的预期结果是1.0.0.127,因此即使没有额外的点,它仍然是wrong@Stoff看起来您的输入与OP的不同,或者我最初误读了他们的代码。预期的输入ip应该是类似于['127'、'0'、'0'、'1'的列表虽然你的结果看起来像是通过了简单的字符串“127.0.0.1”,但这是正确的答案,但不是最好的解决方案,即@L.Kärkkäinent。这是正确的答案,但不是最好的解决方案,即@L.Kärkkäinen最佳工作答案。被接受的答案不是反向八位组格式的工作解决方案。我同意这一点将是Python3.3+的发展方向。当最初提出这个问题时,我猜他们仍然使用Python2,而Python2没有这个模块。问题中没有括号的裸图表明了这一点。最佳工作答案。接受的答案不是反向八位组格式的有效解决方案。我同意这将是g的发展方向o对于Python 3.3+。当最初提出这个问题时,我猜他们仍然在使用Python 2,而Python 2没有这个模块。问题中没有括号的裸体打印说明了这一点。