5

Чтобы вычислить контрольную сумму SHA1 загруженного файла, я мог бы напечатать

/usr/bin/openssl sha1

в Терминал и затем перетащите туда файл, который я хочу проверить. Чтобы сделать это проще, можно включить пункт контекстного меню для этого действия.

Как лучше всего создать такой предмет в Mac OS X 10.6? Подробный ответ приветствуется, потому что у меня нет хорошего опыта работы с AppleScript и т.д.


Шаг за шагом

  1. Открыть Автоматор
  2. Создать новый сервис
  3. Выберите, чтобы получать выбранные файлы и папки в Finder
  4. Добавьте действие Run Shell Script, где вашей командой bash является /usr/bin/openssl sha1 "$@" и вы передаете ввод в качестве аргументов

Как я могу получить вывод? Желательно во всплывающем окне Growl или в окне / диалоге сообщений.

2 ответа2

7
  1. Открыть Автоматор
  2. Создать новый сервис
  3. Выберите, чтобы получать выбранные файлы и папки в Finder (примечание: на самом деле это не слишком хорошо работает с папками ...)
  4. Добавьте действие Запустите Shell Script, установите Shell в /bin /bash и передайте ввод в качестве аргументов и введите этот скрипт:

    for file; do
        if [[ -d "$file" ]]; then
            echo "$(basename "$file") is a directory"
        else
            cd "$(dirname "$file")"
            /usr/bin/openssl sha1 "$(basename "$file")"
        fi
    done | tr "\n" "\r"
    
  5. Добавьте действие Запустите Applescript и введите этот скрипт:

    on run {input, parameters}
        tell application "System Events"
            activate
            display dialog input buttons {"OK"} default button 1
        end tell
    end run
    
  6. Сохраните сервис с описательным именем

3

Я взял отличный ответ Гордона в качестве отправной точки и немного приукрашивал его. Публикация этих изменений здесь на случай, если кто-то еще может найти их полезными. Моя версия рассчитывает MD5, а также хэши SHA1 (в более удобочитаемом формате), а также истекает через 5 минут, если вы забудете нажать кнопку "ОК" вместо того, чтобы выдавать ошибку AppleScript.

Shell Script

    for file; do
      if [[ -d "$file" ]]; then
        echo "$(basename "$file") is a directory"
      else
        cd "$(dirname "$file")"
        echo -e "$(basename "$file")\r"
        echo -n "MD5: "
        /usr/bin/openssl md5 "$(basename "$file")" | egrep -o [a-f0-9]{32}
        echo -n "SHA1: "
        /usr/bin/openssl sha1 "$(basename "$file")" | egrep -o [a-f0-9]{40}
      fi
    done | tr "\n" "\r"

AppleScript

    on run {input, parameters}
      with timeout of 360 seconds
        tell application "System Events"
          activate
          display dialog input buttons {"OK"} default button 1 with title "Cryptographic Hashes" giving up after 300 --seconds
        end tell
      end timeout
    end run

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .