2013-06-07 2 views
1

다음은 스크립트입니다. 인쇄 줄을 굵은 글씨로 수정하려고했습니다.IP 주소를 역전해야하지만 IPy 사용법이 명확하지 않습니다.) 역방향 이름()

reverseNames()는 IPy 모듈의 것입니다. 나는이 예제에서 구현할 방법이 불분명하다.

인쇄 addy.reverseNames() % (애디)

#!/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) 
+0

에 라이브러리 https://github.com/autocracy/python-ipy/wiki

를 설치하는 데 도움이 수 있습니까? 인쇄 출력을 어떻게 수정 하시겠습니까? – zeantsoi

+0

이것은 현재 출력입니다. 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 역방향 영역 구성. – Sloan

+0

죄송하지만, 인쇄하고 싶은 부분이 확실하지 않습니까? – zeantsoi

답변

1

이미 문자열 목록으로 각 옥텟을 캡처하기 때문에, 단지 목록을 리버스 점에 가입 할 수 있습니다. 접미사가 붙은 을 붙이기를 원한다면, 그것은 사소한 것이어야합니다. 당신이 IPy API를 사용하고자하는 경우

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

, 당신은 먼저 IPY 개체에 대한 문자열 표현을 변환해야합니다.

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

원하는 경우 Occupy 라이브러리 IPY를 가져올 수 있습니다. 당신의`logfile`에이 프로그램을 실행할 때

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

이는 어떻게됩니까 반대로

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