Qual é a melhor maneira de fazer Calcular SHA1 como uma opção de menu de contexto no Mac OS X?

5

Para calcular a soma de verificação SHA1 de um arquivo baixado, eu poderia digitar

/usr/bin/openssl sha1

no terminal e, em seguida, arraste o arquivo que eu quero verificar. Para simplificar, é possível ativar um item do menu de contexto para essa ação.

Qual é a melhor maneira de criar esse item no Mac OS X 10.6? Uma resposta detalhada é apreciada, porque não tenho boa experiência com o AppleScript, etc.

Passo a passo

  1. Abrir o Automator
  2. Criar novo serviço
  3. Opte por receber os arquivos e pastas selecionados no Finder
  4. Adicionar ação Execute o Shell Script em que o comando bash é /usr/bin/openssl sha1 "$@" e você passa a entrada como argumentos

Como posso obter o resultado? De preferência, em um pop-up Growl ou em uma janela / diálogo de mensagem.

    
por Andrei 09.05.2010 / 17:22

2 respostas

7
  1. Abrir o Automator
  2. Criar novo serviço
  3. Opte por receber os arquivos e pastas selecionados no Finder (nota: isso não funciona muito bem em pastas ...)
  4. Adicionar ação Execute o Shell Script, defina Shell como / bin / bash e Passe a entrada para "como argumentos" e insira este script:

    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. Adicionar ação Execute o Applescript e insira este script:

    on run {input, parameters}
        tell application "System Events"
            activate
            display dialog input buttons {"OK"} default button 1
        end tell
    end run
    
  6. Salve o serviço com um nome descritivo

por 11.05.2010 / 08:55
3

Tomei a excelente resposta de Gordon como ponto de partida e embelezei-a um pouco. Postar as alterações aqui caso alguém considere útil. Minha versão calcula o MD5, bem como os hashes SHA1 (em um formato mais legível) e também o tempo limite após 5 minutos, se você esquecer de clicar no botão "OK" em vez de lançar um erro AppleScript.

Script da shell

    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
    
por 10.02.2015 / 15:19