我是织物的新手,并且使用python在边缘粗糙。 我正在尝试编写一个小脚本,用一个公共gpg密钥环的ID更新文件。
在伪代码中:
sed("./conf", 'GPG_KEY='085C042B'', 'GPG_KEY='`commandoutput`', use_sudo=true,backup='')
其中commandoutput
是以下命令的输出:
bash$ gpg --list-keys | grep pub | grep 4096R | awk '{ print $2}' | cut -d'/' -f2
我正在寻找有关如何实现这一目标的建议。 我可以管道或捕获结构运行命令的输出吗?
更新#1: 宝马在下面提供了有用的建议,但我不太确定如何融入面料。这就是我现在所拥有的:
DUPLY_DIR = "/etc/duply/fullbackup/"
with cd(DUPLY_DIR):
GPG_KEY1="085C042B"
GPG_KEY2="$(gpg --list-keys | awk '/pub/&&/4096R/{split($2,a,"/"); print a[2]}')"
sed("./conf", 'GPG_KEY1', 'GPG_KEY2', use_sudo=true, backup='')
但这会产生错误:
File "/home/fabric/fabfile.py", line 44, in stage_gpg
GPG_KEY2="$(gpg --list-keys | awk '/pub/&&/4096R/{split($2,a,"/"); print a[2]}')" TypeError: unsupported operand type(s) for /: 'str' and 'str'
答案 0 :(得分:0)
首先,gpg命令可以替换为
gpg --list-keys |awk '/pub/&&/4096R/{split($2,a,"/");print a[2]}'
在所有* .conf文件中用gpg ouptut替换GPG密钥“085C042B”。
GPG_KEY1="085C042B"
GPG_KEY2=$(gpg --list-keys |awk '/pub/&&/4096R/{split($2,a,"/");print a[2]}' )
sed -i "s/$GPG_KEY1/$GPG_KEY2/" *.conf