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 123sudo执行的,后面的>重定向没有用sudo

解决办法

修改上面cmd命令

cmd = "echo %s |sudo -S bash -c 'echo 123 > /etc/hosts'" % pc_password

bash命令来自于英文词组“Bourne shell”的缩写,其功能是命令终端解释器。 bash是绝大多数Linux系统默认的命令终端解释器,能够处理用户所输入的命令,以及执行指定的Shell脚本文件。常用参数:

-n 检测脚本是否正确本
-x 输出执行过程
-c 从字符串中读入命令

posted @ 2023-02-17 15:48  Tarzen  阅读(1265)  评论(0编辑  收藏  举报