让我们开始今天的内容!
如果你和我一样,你的树莓派总是运行着某些东西:可能是备份、网络监控,或者只是一个简单的脚本。但是每天重复同样的任务很快就会让人厌烦。这时Python就派上用场了。只需几个简单的脚本,你的树莓派就能自动处理这些无聊的事情。我测试了许多脚本,并挑选出了其中最有用的几个。
Python脚本可以在树莓派上用于自动化功能任务,如备份、监控、警报和设备控制,只需几行代码即可实现。与bash脚本相比,它们更容易编写、阅读和扩展,尤其是在使用库或Web API时。
在本文中,我将分享一些我最常用的Python脚本,这些脚本让我的树莓派变得更智能、更省心。你会发现一些想法、代码片段和提示,你可以立即应用它们,不需要高级技能。
USB插入脚本
从树莓派传输文件通常意味着通过SSH、SCP或云同步进行连接。但有时,最简单的方法仍然是老式的方法——插入USB驱动器。
然而,如果你将树莓派作为无头服务器运行,并且想从中下载一些日志,如果你只是插入USB,树莓派自动将所有相关日志下载到你的USB中并安全弹出,这不是很酷吗?
这听起来像是詹姆斯·邦德电影中的情节——但你可以用一个简单的Python脚本实现它。
你可以使用如下所示的Python代码找到USB的挂载路径:
import osMOUNT_ROOT = "/media/pi"USB_LABEL = "LOGDUMP" # Optional: use a specific USB labeldef find_usb_mount():for mount in os.listdir(MOUNT_ROOT):mount_path = os.path.join(MOUNT_ROOT, mount)if os.path.ismount(mount_path):if USB_LABEL and USB_LABEL.lower() not in mount.lower():continuereturn mount_pathreturn None
然后使用shutil库将数据复制到你的USB:
import osimport shutilimport timeSOURCE_DIR = "/var/log/mylogs"DESTINATION_NAME = f"logs_{time.strftime('%Y%m%d_%H%M%S')}"def copy_logs(usb_path):dest = os.path.join(usb_path, DESTINATION_NAME)os.makedirs(dest, exist_ok=True)shutil.copytree(SOURCE_DIR, dest, dirs_exist_ok=True)print(f" Logs copied to: {dest}")
然而,真正的魔法在于将此脚本添加到你的udev规则中。你可以按照以下步骤操作:
首先,你需要通过运行以下命令使你的Python脚本可执行:
sudo chmod +x /path/to/your/script.py
然后你可以创建一个包含以下bash脚本的包装器shell脚本:
python3 /path/to/your/script.py
同样使这个shell脚本可执行。
最后,你可以使用以下命令创建一个udev规则:
sudo nano /etc/udev/rules.d/99-usb-log.rules
向其中添加以下行:
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z][0-9]", RUN+="/path/to/your/shell/script.sh"
使用以下命令重新加载 udev:
sudo udevadm control --reload-rules && sudo udevadm trigger
现在,无论何时插入 USB 设备,您的树莓派都会自动将所有日志复制到 USB,无需显示器、键盘或鼠标。
您可以通过添加身份验证方法来进一步增强此脚本以提高数据安全性,例如在 USB 上保存的身份验证令牌,Python 脚本会在将所有日志复制到 USB 之前进行验证。
很多人一直以为树莓派(Raspberry Pi)只是创客圈子里的小玩具——一块信用卡大小的开发板,用来点亮 LED、跑个 Python 脚本、或者给中学生上一堂入门编程课。然而,事实远比想象震撼:树莓派已经悄悄完成了从“教学演示”到“工业级主力”的华丽转身,正在产线、机房、实验室甚至外太空里 7×24 小时不间断服役。
如果觉得文章不错记得点赞,推荐,分享~ 我们很乐意为您提供工业树莓派的解决方案,项目有需求请联系我们~ www.edatec.cn/cn
697