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 从字符串中读入命令
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2022-02-17 在linux终端执行python3 xxx.py文件打印的日志输出到指定文件