2011-09-26 4 views
0

LAN에서이 스크립트를 사용하여 각 컴퓨터가 로컬 관리자와 사용자를 나열하도록합니다. 몇 명의 학생들이 디렉토리에서 로컬 관리자를 생성 한 우리 네트워크에서 보안 침해가있었습니다. 우리는 어디에서 찾을 필요가 있습니다. 그냥 가져 목록은, 스크립트가 시스템의 모든 지역 관리자/사용자와 다시 작업 및 보고서Win32net을 사용하여 로컬 사용자를 나열하는 Python 스크립트

192.168.1.1 
192.168.1.2 
192.168.1.3 

하나의 IP가 목록에 같은 그 안에 나열된 전체 네트워크의 IP 주소를 가지고 있지만 두 개 이상이있을 경우 스크립트에서 오류가 발생하여 오류가 발생합니다. (1722, 'NetGroupGetUsers', 'RPC 서버를 사용할 수 없습니다.') 둘 중 하나를 입력하면 잘 표시되므로 목록에 문제가 없습니다. IP가 작동하지 않습니다. 내가이 글을 쓰는에 바보 같은 실수를했을 수 있음을 인정 있도록

import win32net 

def GetUsers(IP): 
print IP, 
print win32net.NetGroupGetUsers(IP,'none',0), 
return 

F = open("C:\Users\JOHNDOE\Desktop\IP_List.txt") 

for CurrentIP in F: 
GetUsers(CurrentIP), 

F.close() 

나는 파이썬 프로그래밍에 아주 새로운 오전. 필자가 보았던 것에서 이것은 VBscript에서 좀 더 쉽게 할 수 있지만 관리자는 Python으로해야한다고 말했다. 어떤 도움이라도 대단히 감사 할 것입니다.

+0

방금 ​​코드 서식을 지정했으며 반환 값에 잘못된 들여 쓰기가 있음을 알았습니다. 이것은 아마도 당신의 문제 일 것입니다. –

답변

1

여기에있는 것처럼 파일은 GetUsers()에 대한 첫 번째 호출 후에 닫히고 F.close()를 할당해야합니다.

내 생각이 진짜 문제가 라인에 관계없는 줄 바꿈 문자는 것을, 그래서 시도 : 파이썬 스타일의 문제로

for CurrentIP in F.readlines(): 
    GetUsers(CurrentIP.strip()); 

F.close() 

, 네 개의 공간 들여 쓰기, 하나의 공간보다 훨씬 바람직, 멀리 함수 정의와 지역 변수 이름은 소문자 (예 : currentIp, getUsers())로 시작해야합니다.

+0

고맙습니다. :) – skjusto

관련 문제