md5sum和脚本的问题

时间:2014-05-30 06:16:32

标签: python bash

我的问题是:我无法在我的脚本中生成并存储我的目录的md5sum

这是我的脚本

#!/usr/bin/python 
md5= `md5sum /etc/shadow`

发生的事情很简单" md5sum / etc / shadow"存储在我的变量md5上,不生成de firm

有人可以告诉我我做错了什么

2 个答案:

答案 0 :(得分:0)

你不能像在Perl中那样运行Bash脚本,你需要使用the subprocess module,它将运行命令并返回程序的输出。您需要using communicate()

获取此输出
import subprocess

p = subprocess.Popen("md5sum /etc/shadow", stdout=subprocess.PIPE)
md5 = p.communicate()[0]
print md5

对于记录,反引号表示法是repr的别名,但它在Python 3中已弃用并删除。它与bash命令无关:

>>> `id`
'<built-in function id>'
>>> repr(id)
'<built-in function id>'

答案 1 :(得分:0)

除了已经提供的答案(使用子流程),您还可以自己计算md5总和:

> md5sum sean.bin
167f3284b5de3bc7dfafaa98b068a65e  sean.bin

>>> import hashlib
>>> md5 = hashlib.md5()
>>> md5.update(open("sean.bin").read())
>>> md5.hexdigest()
'167f3284b5de3bc7dfafaa98b068a65e'

以下是我将如何使用子进程执行此操作:

>>> import subprocess
>>> cmd = "md5sum sean.bin"
>>> proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> out, err = proc.communicate()
>>> out.split(" ")[0]
'167f3284b5de3bc7dfafaa98b068a65e'