【问题标题】:Python Script to List Local Users using Win32net使用 Win32net 列出本地用户的 Python 脚本
【发布时间】:2011-09-26 20:19:13
【问题描述】:

我在 LAN 上使用这个脚本来让每台机器列出它们的本地管理员和用户。我们的网络存在安全漏洞,几个学生在目录之外创建了本地管理员,我们需要找出在哪里。它导入的列表只是列出了整个网络的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 中完成。任何帮助将非常感激。

【问题讨论】:

  • 我刚刚格式化了您的代码并注意到您的返回有错误的缩进。这可能是你的问题。

标签: python windows winapi administration


【解决方案1】:

正如您在此处所拥有的,文件在第一次调用 GetUsers() 后关闭 - 您应该删除 F.close()。

我的猜测是真正的问题是行上多余的换行符,所以试试:

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

F.close()

作为 Python 风格的问题,四空格缩进远优于一个空格,并且函数定义和局部变量名称应以小写字符开头(例如 currentIp、getUsers())。

【讨论】:

  • 非常感谢,已解决。 :)
猜你喜欢
  • 2010-09-30
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
相关资源
最近更新 更多