내 침투 테스트 연구소의 여러 호스트에 대해 snmpwalk의 실행을 자동화하려고합니다. 기본적으로 내 파이썬 스크립트에 대상 IP 목록 (텍스트 파일 형식)을 제공하고 snmpwalk를 실행하여 결과를 개별 파일 (대상 IP 당 하나)에 저장합니다. .Python 3 - subprocess.call 모듈의 stdout 인수를 사용하여 파일에 쓰기 문제
def run_snmpwalk(selection):
# Rewind file
live_list.seek(0)
if selection == '1':
i = 0
for line in live_list:
tgt_host = line.strip("/\n")
file_obj_array[i].write('[+] SNMPWalk user enumeration for IP: ' + tgt_host + ' \n')
print('[+] Attempting to enumerate users from IP: ' + tgt_host)
exit_code = subprocess.call(['snmpwalk', '-c', 'public', '-v1', tgt_host, '1.3.6.1.4.1.77.1.2.25'], stdout=file_obj_array[i])
i += 1
if exit_code == 0:
print('[+] Success')
else:
print('[+] Something went wrong while executing snmpwalk ')
가있을만큼 엉터리, 위의 코드를 작동 나는 하나 개의 작은 세부 사항이 제외에 의도 한대로 다음은 live_list
오브젝트 파일에 포함 된 대상 IP에 대해 도구를 실행 내 코드의 일부입니다 나는 고칠 수 없다. 파일에 헤더를 작성하도록되어
subprocess.call(['snmpwalk', '-c', 'public', '-v1', tgt_host, '1.3.6.1.4.1.77.1.2.25'], stdout=file_obj_array[i])
그리고이 다음 라인 :
는선 아래 내가 이전 명령의 출력을 위해 생성 된 파일에 설정된 stdout
매개 변수를 subprocess.call
모듈을 사용 이는에 이전 명령의 출력에 덤프되는 : 그것이전에 실행에도 불구하고 대신 헤더와 결말의, 그러나
file_obj_array[i].write('[+] SNMPWalk user enumeration for IP: ' + tgt_host + ' \n')
라인은 위의 파일의 맨 아래에 끝라인.
iso.3.6.1.4.1.77.1.2.25.1.1.5.71.117.101.115.116 = STRING: "Guest"
iso.3.6.1.4.1.77.1.2.25.1.1.6.97.117.115.116.105.110 = STRING: "austin"
iso.3.6.1.4.1.77.1.2.25.1.1.9.73.85.83.82.95.83.82.86.50 = STRING: "IUSR_SRV2"
iso.3.6.1.4.1.77.1.2.25.1.1.9.73.87.65.77.95.83.82.86.50 = STRING: "IWAM_SRV2"
iso.3.6.1.4.1.77.1.2.25.1.1.13.65.100.109.105.110.105.115.116.114.97.116.111.114 = STRING: "Administrator"
iso.3.6.1.4.1.77.1.2.25.1.1.14.84.115.73.110.116.101.114.110.101.116.85.115.101.114 = STRING: "TsInternetUser"
[+] SNMPWalk user enumeration for IP: 10.11.1.128
subprocess.call
이 file_obj_array[i].write
전에 파일에 라인을 작성하는 관리 왜 알아낼 수 없습니다가 for 루프에서 다음에 오는에도 불구하고, 다음은 위의 기능의 샘플 출력 파일입니다.
어떤 아이디어라도 도움이됩니다.
감사합니다.
감사 다니엘! 문제가 해결되었습니다. – eviesca