1. 程式人生 > >python—收集系統信息

python—收集系統信息

name int 實例 sum break user iges 分享圖片 bar

1.1 hashlib模塊使用

方法一:先實例化一個對象,再使用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—收集系統信息