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

我正在编写一个Python脚本来访问networking上的所有计算机,login到它们并阅读一些日志文件。 我不想使用像套接字这样的低级别的东西,但是我可以,如果我必须的话。 我意识到我的问题类似于这个问题 ,但不一样。

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

我特别希望login到Windows 7的机器, 而不是Unix。

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

在另一边有一些东西要跟你交谈。 这限制了你在每台机器上设置一个“服务器”,安装一个真实的服务器(例如sshd),自己构建一个“服务器”并安装它,或者使用操作系统的内置和活动功能。

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

  • 一个解决方案是打开telnet,并使用paramiko或扭曲谈话。 这当然不是很安全
  • 接下来,建立一个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'作为搜索路径并观看魔法。

从Ubuntu我使用桑巴:

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

在这里,我给名称,域名和密码

然后在python中:

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

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

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

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