插入USB时记录唯一标识符,格式化为FAT32并复制文件。Bash或Python

2 投票
1 回答
2057 浏览
提问于 2025-04-15 23:30

我想做的事情是:

  • 插入USB闪存驱动器。
  • 挂载它。
  • 把唯一的识别字符串记录到一个文件里。
  • 把驱动器格式化为FAT32。
  • 把一个文本文件复制到驱动器上。
  • 卸载它。
  • 拔掉驱动器。

重复30次。

情况是这样的,我买了30个USB驱动器。我需要格式化每一个,以确保它们是干净的,我还需要从每个设备获取唯一的字符串。我需要把同一个文本文件放到每个驱动器上。

我不太擅长写脚本,但能读懂和跟着bash和python的代码走。

任何建议都很感谢。

编辑

谢谢大家的回复。

这是我目前在Windows上做的事情。

我使用了来自nirsoft.net的USBDeview,选择选项 > 高级选项 > “插入USB设备时执行以下命令”,然后使用了这个命令“python getserial.py %serial_number%”。

这个getserial.py脚本会把从USBDeview传递过来的%serial_number%放到一个文本文件里,然后把一个文件复制到USB设备上。

import sys
import shutil

sourceFile = "C:\\^READ ME.txt"
destinationFile = "E:\\^READ ME.txt"

f = open('serials.txt', 'a')
f.write(sys.argv[1] + '\n')
f.close()

from time import sleep

sleep(3)

shutil.copyfile(sourceFile, destinationFile)

我仍然希望能有一个完整的脚本来完成这个,但我觉得目前我的能力还不够。

1 个回答

2

为了自动检测插入的USB闪存驱动器,你可以使用autofs这个工具。不过,它不能在设备插入时运行脚本,否则其他步骤就能很简单地完成了。

所以,你需要检测autofs是否挂载了新的闪存驱动器。可以考虑使用crontab,定期检查是否有磁盘被挂载,如果有的话,就可以执行你的步骤。唯一需要注意的是,如何判断你是否已经处理过这个挂载的磁盘(也就是说,这个磁盘是新的还是已经处理过的)。

为了找到UUID(唯一标识符),你可以查看一下ls /dev/disk/by-uuid或者blkid,然后用它们的输出结果来获取UUID。格式化你的驱动器可以使用类似mkfs -t vfat /dev/<你的USB驱动器>的命令。

希望这些提示能帮助你解决问题。

撰写回答