네트워크에 연결된 모든 장치의 MAC 주소를 얻고 싶습니다. [스크립트에서-모든 Windows 환경]
나는 그것을 위해 파이썬을 사용하기로 결정했습니다. 나는 그것을 위해 nmap을 사용했습니다.
import nmap
nm = nmap.PortScanner()
nm.scan('127.0.0.1', '22-443')
#nm.scan(hosts='192.168.1.0/24', arguments='-n -sP -PE -PA21,23,80,3389')
nm.scan(hosts = '192.168.1.0/24', arguments = '-n -sP -PE -T5')
for host in nm.all_hosts():
mac = nm[host]['addresses']['mac']
print("mac " + mac)
[이 방법의 문제점은 때때로 몇 개의 장치를 놓친다는 것입니다. 의미, 라우터에 5 개의 장치가 연결되어 있고 스크립트를 처음 실행하면 하나 또는 두 개의 장치 만 반환됩니다. 다음에 스크립트를 실행하면 5 개가 모두 반환되고 세 번째는 1 개일 수 있습니다.
명령 프롬프트를 열고 수행하는 것처럼
arp -a
매번 완벽하게 작동합니다.
그래서 내 질문은 파이썬 스크립트에서 cmd의 결과를 구문 분석 할 수있는 방법이 있습니까?
os.popen (.. ?? ..)을 봤는데 어떻게 할 수 있는지 정확히 이해할 수 없습니까? 이것에 대한 좋은 라이브러리가 있습니까? https://pypi.python.org/pypi/arprequest/0.3
하위 프로세스 모듈을 봐야 합니다. 아마도 다음 check_output
방법 을 사용하고 싶을 것입니다 .
import subprocess
output = subprocess.check_output(("arp", "-a"))
# Parse output here
check_output
str
파이썬 2의 bytes
객체와 output.decode("ascii")
예를 들어 변환 할 수있는 파이썬 3 의 객체를 반환합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다