1

我正在编写一个 Python 脚本来访问网络上的所有计算机,登录它们并读取一些日志文件。我不想使用像socket这样低级的东西,但如果必须的话,我可以。我意识到我的问题与这个问题相似,但不一样。

是否有用于访问外部 Windows 机器的模块?有没有人做过这样的事情?

我特别想登录 Windows 7 机器,而不是 unix。

我们还假设我要登录的每台计算机都安装并启用了远程桌面。我也不担心网络安全或加密,因为这些文件不是机密文件。默认情况下,Windows 机器上没有安装 SSH 吗?

4

3 回答 3

3

另一边一定有什么东西可以和你交谈。这限制了您在每台机器上设置“服务器”、安装真实服务器(即 sshd)、自己构建“服务器”并安装它,或者使用操作系统的内置和活动功能。

基于此,你想在这些机器上建立什么样的系统?它需要做什么?只是阅读预先指定的文件列表的内容?这份名单会改变吗?

  • 一种解决方案是打开 telnet,并使用 paramiko 或 twisted 进行对话。这当然不是很安全
  • 接下来,设置一个 samba 共享,并远程访问该文件夹。这也是不安全的,虽然不如 telnet
  • 如果您愿意,您可以找到一个 ssh 守护程序端口并运行它
  • 来自 sysinternals 的 Psexec 可能有效
  • 使用 twisted 构建具有您需要的功能的服务器应用程序
  • 使用 ncat 侦听端口并生成 cmd 提示符

请注意,大多数远程访问 Windows 的解决方案都......很差。最好的解决方案可能是自己动手,但这是一项艰苦的工作,你可能会犯错误。

此外,Windows 7并不完全是多用户友好的。单个进程可以作为单独的用户运行,但操作系统不支持多个用户同时登录。有人将成为“用户”,而其他人只是具有不同凭据集的进程。

这更像是对 M$ 的人为限制,而不是任何技术上的限制。要查看实际情况,请尝试在用户本地登录时使用 RDP 登录。娱乐时间。

根据您的编辑,最简单的方法就是在盒子上设置一个 samba 共享。

设置此共享后:

with open(r'\\myCompNameOrIP\C\windows\logs\logfile.txt','rb') as logfile:
    loglines = logfile.readlines()

或者您可以使用此处找到的gencat示例。只需将其作为搜索路径并观看魔术。r'\\myCompNameOrIP\C\windows\logs\*.txt'

于 2012-05-30T17:20:45.743 回答
0

从 Ubuntu 我使用 samba:

在 Bash 中:gvfs-mount smb://them/folder

这里我给出名称、域和密码

然后在python中:

folder = '/home/me/.gvfs/folder on them'

使用 os 模块我读取里面的文件夹和文件。

我在小型企业环境中工作。

于 2012-05-30T16:45:04.550 回答
0

为什么不让每台计算机都将日志文件发送到中央计算机?

于 2012-05-30T17:35:59.387 回答