0

我需要创建一个苹果脚本来按顺序执行 DD 命令,将相同的 .img 文件复制到多个 USB 闪存驱动器

上下文:计算机连接到有源 USB 集线器,其中 7 个 USB 闪存驱动器通过 diskutil 连接和卸载。没有其他 USB 设备或磁盘连接到计算机(因此 U 盘将分配一个 disk1 - disk7 资源映射)

步骤

  • 将准备一个名为“source.img”的文件并将其放在桌面上(比如可启动操作系统的 .img)

  • 必须要求终端将目录更改为桌面

  • 具有管理权限(密码可以插入脚本中,或向用户询问一次)必须要求它执行:

“sudo dd if=source.img of=/dev/rdisk1 bs=1m”

  • 脚本必须等到操作结束,然后再要求终端执行另一个DD,这次到disk2:

“sudo dd if=source.img of=/dev/rdisk2 bs=1m”

再次,等到操作结束,再问:

“sudo dd if=source.img of=/dev/rdisk3 bs=1m”

以此类推,使用 rdisk4、rdisk5、rdisk6、rdisk7。

  • 在 disk7 操作结束时,该脚本可以关闭终端并向用户发送一条查找器消息(或音频通知),表明对 7 个闪存驱动器的 USB 复制过程已结束。

这是一种创建“便宜的 USB 复制器”的方法,可将可启动图像放在多个棒上,我需要它用于我的学生的学校项目。

有人可以帮忙吗?我是 Applescript 的零。这个东西对很多人都有用。

谢谢 !阿尔贝托

4

1 回答 1

0

为什么你需要使用 Applescript 来做这件事?为什么不像这样一个简单的 shell 脚本呢?

#!/bin/bash
cd ~/Desktop
for i in {1..7}; do
   echo "Duplicate to /dev/rdisk${i} (y/n) ?"
   read r
   [[ "$r" == "y" ]] && echo sudo dd if=source.img of=/dev/rdisk${i} bs=1m
done
say "Duplication complete"

将其保存在桌面上作为“复制器”,然后启动终端并在新的终端窗口中键入:

chmod +x Desktop/Duplicator

使其可执行。然后,您可以通过双击桌面上的“复制器”图标来运行它。

注意: 目前,它只是回显“dd”命令,运行它,看看你是否喜欢它,如果一切看起来都正确,则删除“echo”。

注意: 这至少适用于 Mavericks 和 Mountain Lion,在某些旧版本的 OSX 上,您可能需要将脚本命名为“Duplicator.command”和/或将脚本与终端应用程序相关联。见这里。

注意: 您可以尝试在“bs=1m”之后添加一个“&”,以便 7 个“dd”命令并行运行,然后在“done”和“say”行之间添加一个新行“wait”等待所有“dd”命令完成。这意味着您可以一个接一个地立即回答这 7 个问题,而不必坐在那里看着并一次做一个。它还可能使“dd”命令运行得更快或更慢——这取决于你的记忆棒和 USB 总线的相对性能。它还将避免“sudo”超时的问题——尽管可以通过更改文件 /etc/sudoers.xml 中的超时来解决这些问题。

于 2014-02-02T10:43:26.497 回答