我正在编写一个 Python 脚本来访问网络上的所有计算机,登录到它们并读取一些日志文件。我不想使用像 socket 这样低级的东西, 但如果必须的话,我可以。我意识到我的问题类似于 this question , 但不一样。
是否有用于访问外部 Windows 机器的模块? 以前有人做过这样的事吗?
我特别希望登录 Windows 7 机器,不是 unix。
我们还假设我要登录的每台计算机都安装并启用了远程桌面。我也不担心网络安全或加密,因为这些文件不是 secret 的。默认情况下,Windows 机器上没有安装 SSH 吗?
最佳答案
另一边一定有什么东西可以让你说话。这限制了您在每台机器上设置“服务器”、安装真实服务器(即 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'
作为搜索路径,然后观看魔术。
关于python - 如何在 Windows 上使用 Python 访问远程文件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820376/