2011-10-17 2 views
1

특정 네트워크 스캐닝 도구 (nmap, xprobe, p0f)를 지정할 수있는 옵션을 제공하는 응용 프로그램을 작성한 다음 해당 도구로 주어진 서브넷을 검사합니다. 도구를 다시 구현하고 간단히 쉘에서 호출하고 내 응용 프로그램에 대한 응답을 구문 분석 한 다음 결과를 파싱하고 DB의 특정 형식으로 저장합니다. 이 응용 프로그램은 기본적으로 DB의 데이터를 사용할 다른 응용 프로그램의 피더 응용 프로그램입니다.Python : 가져온 모듈에 대한 핸들 얻기

필자는 모든 Scan Tool 인터페이스가 플러그인으로 구현되도록 코드를 작성했습니다. 구조는 모든 개발자는 (당연히 올바른 의미에서)를 tool.py 파일을 작성하고 플러그인 폴더로 드롭됩니다 할 필요가,

Project/ 
    DBWriter.py 
    Scanner/ 
     __init__.py 
     network_mapper.py 
     Scanner.py 
     Plugins/ 
     __init__.py 
     nmap.py 
     p0f.py 
    Others/ 

그래서 새로운 검색 인터페이스를 추가하는 것입니다.

이 작업을 수행하려면 런타임에 올바른 파이썬 모듈을 가져올 수 있어야합니다. 사용자가

를 입력 내용에 따라
from Plugins import nmap 
or 
from Plugins import xprobe 

여기에 코드가 제대로 작동 내가

f,p,d = imp.find_module("Plugins") 
x = imp.load_module("Plugins",f,p,d) 
path_n = x.__path__ 
f,p,d = imp.find_module("%s"%(tool),path_n) 
tool_mod = imp.load_module("%s"%(tool),f,p,d) 
tool_mod.scan() #Irrespective of what user enters or what new plugin is developed, this line does not need to change and will work as long as plug-in has a scan function 

추가 한 코드입니다. 그러나 PyInstaller (Windows/* Nix 플랫폼 용)을 사용하여 하나의 실행 파일로 묶으려고하면 find_module과 load_module에서 많은 문제가 발생하여 결과적으로 경로가 올바르게 실행되지 않기 때문에 ImportError가 발생합니다 감압).

내 질문은 - 파이썬에서 PyInstaller와 잘 작동하는 동일한 기능을 사용할 수있는 다른 방법이 있습니까?

나는 이전 pyInstaller 중에있는 해결 방법을 찾고이 질문을했다,하지만 당신은 Windows에서만 실행해야하는 경우에는 응답은 내가 py2exe을 시도하는 것이 좋습니다 파이썬

답변

0

에서 해결 방법을 찾기 위해 저를 강요했다.

py2exe는 Python 스크립트를 실행 가능한 Windows 프로그램으로 변환하는 Python Distutils 확장 프로그램으로, Python 설치없이 실행할 수 있습니다.

우리는 매우 큰 Python 프로그램의 속도를 높이기 위해이 코드를 사용하고 가져온 모듈을 처리합니다.

+0

그건 방법이 될거에요,하지만 PyInstaller가 (거의 아름답게) – RedBaron

+0

을 제공하는 크로스 플랫폼 옵션을 찾고있었습니다. 어떤 플랫폼이 필요한지 질문에 메모를 추가하는 것이 좋습니다. –

관련 문제