我有一个相当常见的任务,那就是在我们的 Windows 环境中查找谁在我们的 Linux(Ubuntu)文件服务器上打开了文件。
我们在网络上使用 Samba,我从我的工作站使用 Putty 建立一个 shell 窗口来运行 bash 脚本。
我一直在使用类似这样的方法来查找打开了哪些文件:(这将返回每个打开文件的进程 ID 列表)
Robert:$ sudo lsof | grep "/srv/office/some/folder"
然后,我跟进类似这样的操作来显示谁拥有该进程:(这将返回使用 IP4 协议在网络上拥有该进程的机器的名称)
Robert:$ sudo lsof -p 27295 | grep "IPv4"
现在我知道了哪个 Windows 客户端打开了文件并可以从那里采取行动。
正如您所看到的,这并不难,但很耗时。我更希望有一个可以运行的 Windows 应用程序,它可以给我我想要的东西。
因此,我一直在考虑创建一些可以在 Linux 上运行的进程,该进程侦听某个端口,然后返回所有打开文件的干净列表以及打开该文件的主机的 IP 地址。然后,一个小型 Windows 客户端应用程序可以在端口上发送请求。
这似乎应该是一个非常普遍的需求,但我找不到以前做过的类似的事情。
有什么建议么?
答案1
I. 如果您只需要在一台计算机上执行该任务 - 我会这样做:
- 为此类任务创建 Linux 帐户(例如“sambaadmin”),以提高安全性
- 配置 putty 以便该帐户自动登录
编写执行管理任务的脚本(
/home/sambaadmin/see_clients.sh
例如)。我会这样完成你的任务:smbstatus -p 读取 -p “按 [Enter] 退出...” 退出
为其添加执行权限(
chmod +x /home/sambaadmin/see_clients.sh
)在/home/sambaadmin/.bash_profile文件末尾调用此脚本。.bash_profile在用户登录后自动执行。
在 Windows 桌面上创建 Putty Shoutcut 以实现自动登录会话
完成后,您的 shourtuc 将打开 putty,登录,您的“管理任务脚本”将被执行,您将在 putty 窗口中看到它,按下 Enter 后,会话将结束。
II. 如果您在公司使用多台计算机 - 请用 python 编写简单的 Web 应用程序或使用一些服务器 Web 管理软件(例如 Webmin)。
III. 您可以使用 cron 每隔一两分钟执行一次脚本,如下所示:
smbstatus -p > /somewhere/sambashare/openfiles.txt
您可以在 Windows 中创建该文件的快捷方式,然后打开它即可查看发生了什么。
\\sambaserver\sambashare\openfiles.txt