python—收集系統信息
方法一:先實例化一個對象,再使用update做校驗,最後十六進制查看hexdigest
In [3]: import hashlib
In [5]: md5 = hashlib.md5()
In [6]: md5.update("a")
In [7]: md5.hexdigest()
Out[7]: '0cc175b9c0f1b6a831c399e269772661'
與shell下一致,-n 不加換行符時
[root@huangzp3 python]# echo "a"|md5sum
60b725f10c9c85c70d97880dfe8191b3 -
[root@huangzp3 python]# echo -n "a"|md5sum
0cc175b9c0f1b6a831c399e269772661 -
說明:更新,實際為ab\n的值
In [8]: md5.update("b\n")
In [9]: md5.hexdigest()
Out[9]: 'daa8075d6ac5ff8d0c6d4650adb4ef29'
對比shell,哈希值一樣
[root@huangzp3 python]# echo "ab"|md5sum
daa8075d6ac5ff8d0c6d4650adb4ef29 -
方法二:字符串短時,直接調用
In [10]: hashlib.md5("hello").hexdigest()
Out[10]: '5d41402abc4b2a76b9719d911017c592'
腳本:
#!/usr/bin/env python import sys import hashlib import codecs def getMd5(f): md5 = hashlib.md5() with codecs.open(f) as fd: while True: data = fd.read(4096) if data: md5.update(data) #每讀一次,獲取一次md5值,MD5值累加 else: break return md5.hexdigest() if __name__ == "__main__": try: print getMd5(sys.argv[1]) except IndexError: print ("%s follow a argument" % __file__)
運行結果:
[root@huangzp3 python]# python 01.py 1.py
e796a8f418fa90d7e4f0a162119f114a
[root@huangzp3 python]# cat 1.py |md5sum
e796a8f418fa90d7e4f0a162119f114a -
python—收集系統信息