我们公司运行着 600 多个 Ubuntu 系统。这是一个数据中心,所以我们有一些政策。我们已经禁用了所有 Ubuntu 系统中存储设备的使用。但是我们想配置电子邮件警报。如果有人插入存储设备,我们应该收到一封电子邮件警报,主题如下,
电子邮件提醒:
STORAGE DEVICE FOUND on IP: 172.29.35.18
笔记:
- 至于 Windows 系统,我们在 DC 中应用了某些策略。因此 Windows 系统没有问题。
- 我们还需要接收 Ubuntu 系统的警报。任何能完成上述任务的方法都很好。
更新:
- 我想澄清几件事,如果用户断开网线,并且使用 USB 进行数据传输,我知道我不会收到任何通知,但如果他们稍后连接网络,是否可以收到那些待处理的通知?
- 有些人使用 USB 为手机充电,是否也可以收到电子邮件通知?
答案1
方法是使用udev此规则将适用于任何制造商的所有 USB 存储设备。对于电子邮件部分,请注意 Ubuntu Desktop 不包含任何命令行电子邮件客户端,因此除非您希望安装一个,否则通知脚本应直接通过原始 SMTP 命令与您的本地邮件服务器通信。
答案2
您可以使用 Cuttlefish (https://apps.ubuntu.com/cat/applications/cuttlefish/)!
Cuttlefish 是一个可以在事件发生时执行操作的程序。例如,您可以在插入 USB 时运行命令:
如何使用 Cuttlefish:
- 从左上角创建一个新的 Reflex:
- 为其指定您喜欢的名称,启用
Activated by stimulus
,然后单击None
以选择一个刺激: - 单击左侧
Hardware
和右侧USB device plugged in
。然后单击“确定”。 - 点击反应选项卡,点击左下角的加号:
- 前往应用程序->启动应用程序(高级模式)。然后单击确定。
- 现在,在右侧,您可以看到您可以选择一个可执行文件来使用您想要的任何参数运行,因此,您必须让 Cuttlefish 在系统托盘上运行,并且每次插入 USB 设备时它都会运行您的命令:
我假设您知道一个可以用来发送电子邮件的命令。如果不知道,请将其作为评论发布,以便将其包含在我的答案中。
答案3
根据此回答,将此代码添加到/etc/udev/rules.d/90-local.rules
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1", ATTRS{vendor}=="SanDisk ", RUN+="/usr/local/bin/usb.sh"
并在usb.sh
文件中添加此代码
#!/bin/bash
ifconfig | grep ip >>/tmp/usb.log
echo “USB inserted.” | mutt -a /tmp/usb.log -s “attachment” [email protected]
现在我要尝试自动化它,以便您可以在 600 个 Ubuntu 系统中添加此规则/脚本。
sudo echo " ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1", ATTRS{vendor}=="SanDisk ", RUN+="/usr/local/bin/usb.sh" ">>/etc/udev/rules.d/90-local.rules
#then the `usb.sh`
sudo echo " #!/bin/bash
ifconfig | grep ip >>/tmp/usb.log
echo “USB inserted.” | mutt -a /tmp/usb.log -s “attachment” [email protected] " >>/usr/local/bin/usb.sh
此脚本未经测试,自动化过程将得到改进。
只要我设置一些测试电脑。
答案4
您将能够看到任何新的 USB 设备,它们不仅能获取服务器的电源(通常包括手机)
对于 USB 部分:如何在 Python 中的 Linux 中监听“USB 设备插入”事件?
使用 python 发送电子邮件:电子邮件 - Python - 如何发送 utf-8 电子邮件?
对于以太网使用 netplugd 并使用 up 或 down 语句:
Ubuntu Manpage:netplugd——网线热插拔管理守护进程