Python Script для вывода списка локальных пользователей с помощью Win32net - PullRequest
0 голосов
/ 27 сентября 2011

Я использую этот сценарий в локальной сети, чтобы на каждой машине был указан список их локальных администраторов и пользователей.В нашей сети произошли нарушения безопасности, когда пара студентов создали локальных администраторов вне каталога, и нам нужно выяснить, где.В импортируемом списке просто перечислены IP-адреса всей сети, например

192.168.1.1
192.168.1.2
192.168.1.3

Когда в списке только один 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()

Я довольно новичок в программировании на Python, поэтому я признаю, что, возможно, допустил глупую ошибку при написании этого.Из того, что я видел, это можно сделать несколько проще в VBscript, но наш супервайзер сказал нам, что это должно быть сделано в python.Любая помощь приветствуется.

1 Ответ

1 голос
/ 27 сентября 2011

Как он у вас есть, файл закрывается после первого вызова GetUsers () - вы должны сделать отступ в F.close ().

Я предполагаю, что настоящая проблема заключается в посторонних символах новой строки в строке, поэтому попробуйте:

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

F.close()

Что касается стиля Python, отступ с четырьмя пробелами далеко, гораздо предпочтительнее, чем одностраничный, а определения функций и имена локальных переменных должны начинаться со строчных букв (например, currentIp, getUsers ()).

...