python执行linux sudo命令(以及sudo重定向提示Permission denied)
Hi,大家好我是Tarzan。
在编写Python自动化的时候尝尝会与操作系统打交道,比如查看文件目录、读写文件等等。今天我们聊的就是Python执行sudo 命令
解决大部分sudo问题的方法
import subprocess
cmd = 'echo %s |sudo -S cat /etc/hosts' % pc_password
res = subprocess.getoutput(cmd)
print(res)
解决sudo 重定向写入文件
如果想执行echo 123 > /etc/hosts
如果我们继续用上面的方法,我们看看结果:
cmd = 'echo %s | sudo -S echo 123 > /etc/hosts' % pc_password
res = subprocess.getoutput(cmd)
输出结果是:
'/bin/sh: 1: cannot create /etc/hosts: Permission denied'
导致这个原因是echo 123
用sudo
执行的,后面的>
重定向没有用sudo
解决办法
修改上面cmd
命令
cmd = "echo %s |sudo -S bash -c 'echo 123 > /etc/hosts'" % pc_password
bash命令来自于英文词组“Bourne shell”的缩写,其功能是命令终端解释器。 bash是绝大多数Linux系统默认的命令终端解释器,能够处理用户所输入的命令,以及执行指定的Shell脚本文件。常用参数:
-n 检测脚本是否正确本
-x 输出执行过程
-c 从字符串中读入命令