Как создать appleScript для нескольких последовательных команд терминала dd (для дублирования нескольких USB-накопителей)?

Мне нужно создать скрипт Apple для последовательного выполнения DD-команд, чтобы реплицировать один и тот же файл.img на несколько флешек.

Контекст: компьютер подключен к USB-концентратору с питанием от 7 флешек, подключенных и отключенных с помощью diskutil. Никакие другие USB-устройства или диски не подключены к компьютеру (поэтому USB-накопителям будет назначено сопоставление ресурсов disk1 - disk7)

Шаги

  • файл с именем "source.img" будет подготовлен и помещен на рабочий стол (скажем,.img загрузочной ОС)

  • необходимо попросить терминал сменить каталог на рабочий стол

  • с административными привилегиями (пароль может быть вставлен в скрипт или задан один раз пользователю), его необходимо попросить выполнить:

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

  • скрипт должен дождаться завершения операции, а затем попросить терминал выполнить еще один DD на диск2 на этот раз:

"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 сценарий может завершить работу терминала и отправить пользователю сообщение об обнаружении (или звуковое уведомление), что процесс дублирования USB на 7 флэш-накопителях завершен.

Это способ создать "дешевый USB-дубликатор" для загрузочных образов, которые можно поставить на несколько флешек, он мне нужен для школьного проекта для моих учеников.

Кто-нибудь может помочь? Я ноль с Applescript. И эта вещь будет полезна для многих.

Спасибо! Alberto

1 ответ

Зачем вам это нужно делать с помощью Applescript? Почему не такой простой скрипт оболочки?

#!/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" и / или связать скрипт с приложением Terminal. Смотрите здесь.

Примечание: вы можете попробовать добавить "&" после "bs=1m", чтобы 7 команд "dd" выполнялись параллельно, а затем добавить новую строку с надписью "wait" между строками "done" и "say" ждать завершения всех команд "dd". Это будет означать, что вы можете ответить на 7 вопросов сразу один за другим вместо того, чтобы сидеть там и смотреть и делать их по одному за раз. Это также может заставить команды "dd" выполняться быстрее или медленнее - в зависимости от относительной производительности ваших карт памяти и шины USB. Это также позволит избежать проблем с тайм-аутом "sudo" - хотя их можно решить, изменив таймаут в файле /etc/sudoers.

Другие вопросы по тегам