Un hash Python MD5 es diferente al creado por el comando md5sum en el shell. ¿Por qué?¿Por qué un hash MD5 creado por Python es diferente de uno creado usando echo y md5sum en el shell?
>>> import hashlib
>>> h = hashlib.md5()
>>> h.update("mystringforhash")
>>> print h.hexdigest()
86b6423cb6d211734fc7d81bbc5e11d3 # Result from Python
$ echo mystringforhash | md5sum
686687dd68c5de717b34569dbfb8d3c3 - # Result on the shell
En realidad, este es uno de los grandes ejemplos que utilizo cuando le digo a la gente a usar más Python o nivel higer idiomas en lugar de scripts de shell para el trabajo que normalmente se considera mejor en scripts de shell. La naturaleza de los datos y códigos mixtos, y una sintaxis diferente para cada comando hacen que los guiones de shell sean invisiblemente propensos a errores – jsbueno
Si solo se da una "cáscara" no se puede confiar en que 'echo' tenga un indicador' -n' viable. POSIX dice sobre "echo": "Si el primer operando es' -n', o si alguno de los operandos contiene un caracter '', los resultados están definidos por la implementación. " (fuente: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/echo.html). Use 'printf' en su lugar. –