Drag’n’Drop, Hashes MD5 no Ubuntu!

Após muito pesquisar no Google, vi que estamos ainda, usuários do Ubuntu, relegados a abrir um terminal toda vez que queremos verificar a Hash MD5 de um arquivo (para comparar se dois são iguais, e também verificar autenticidade de arquivos baixados da internet). No Windows, beleza, tem o freeware Hash Tab que adiciona uma tab nas propriedades de arquivo para esta função. Mas para Ubuntu, em ambiente Gnome, ainda não passa de uma idéia (http://brainstorm.ubuntu.com/idea/2139/). Pois bem, em atenção ao princípio de que em software livre os usuários também devem colaborar se não a coisa não anda, resolvi publicar o script, que coloquei na área de trabalho como lançador (comando = “~/bin/gmd5sum %u” com argumento %u pois assim basta arrastar e soltar um arquivo para verificar sua checksum).

Como sabemos que os discos rígidos são a parte mais lenta de um computador, e para calcular uma hash MD5 de um arquivo com vários gigabytes pode levar muito tempo (pois ele tem que ler todo o arquivo) então coloquei um limite, de 4Gb = 4096 Megabytes, onde passando disso o script se recusa a executar. Isto pode ser configurado, alterando a linha, TOO_HIGH_SIZE=4096, para o valor desejado.

Dito isto, este é o script (basta copiar e colar num arquivo, torná-lo executável e criar um lançador pra ele na área de trabalho conforme explicado acima):

#!/bin/bash
#Configurar tamanhos altos e altos de mais (em Mb): alto, mostra mensagem informativa 
#e alto demais, emite mensagem de erro sem calcular checksum
HIGH_SIZE=100
TOO_HIGH_SIZE=4096
FILE="${@}"
if [ "x$1" = "x" ]; then
	xmessage "Erro: nenhum arquivo indicado para calcular md5 sum"
	exit 1
fi;
SIZE=$(ls -l "${FILE}"|awk '{print $5}')
SIZE_HUMAN=$((SIZE/1024/1024))
if [ $SIZE_HUMAN -gt $TOO_HIGH_SIZE ]; then
	xmessage "Erro: '$FILE': tamanho de arquivo muito grande ($SIZE_HUMAN > $TOO_HIGH_SIZE Mb)"
	exit 1
fi;  
if [ $SIZE_HUMAN -gt $HIGH_SIZE ]; then
	xmessage "Calculando checksum de arquivo com $SIZE_HUMAN Mb..." -nearmouse -timeout 5 -buttons Ok:0,Cancelar:1
	if [ $? -eq 1 ]; then
		xmessage -nearmouse -timeout 5 "Operacao cancelada pelo usuario..."
	        exit 1
	fi
fi

MD5="$(md5sum "${FILE}")"
xmessage "$MD5 ($SIZE bytes = $SIZE_HUMAN Mb)"

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *