如何在Windows上使用Python访问远程文件系统?

时间:2012-05-30 16:27:34

标签: python windows networking

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

是否有用于访问外部Windows计算机的模块? 以前有人做过这样的事吗?

我特意想登录Windows 7计算机,不是unix。

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

3 个答案:

答案 0 :(得分: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找到的样本here。只需将r'\\myCompNameOrIP\C\windows\logs\*.txt'作为搜索路径,然后观看魔术。

答案 1 :(得分:0)

从Ubuntu我使用samba:

在Bash中:     gvfs-mount smb://他们/文件夹

在这里,我提供名称,域名和密码

然后在python:

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

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

我在一个小型商业环境中工作。

答案 2 :(得分:0)

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