Linux中Python自动输入sudo 密码【管道 sudo参数 stdin&stdout】
一、背景和需求
背景:
由于docker服务进程都是以root帐号的身份运行的,所以用docker跑abpred出来的文件所有者都是root,
而我作为一般用户,操作这个文件不够权限,运行代码时需要sudo 后输入密码。
需求:
python中调用shell 执行命令后,自动输入密码。
下面图片是对应说明,可以跳过直接进入下一部分。
代码:

运行记录(sudo需要输入密码):

生成的文件的属性及所有者:

二、解决方案
管道+sudo -S:
os.system('echo %s | sudo -S %s' % (password, command))
三、原理
sudo的-S参数 含义是:从标准输入读取密码
管道前输出的密码作为sudo -S 的stdin,从而达到自动输入密码的作用。
注意:-S 是大S 小写s作用不一样
附sudo的文档:

四、成功截图

五、参考文档
https://www.cnblogs.com/chengmo/archive/2010/10/21/1856577.html # 管道
https://www.cnblogs.com/badboy200800/p/11121880.html # stdin和stdout
https://blog.csdn.net/u013948858/article/details/78429954
https://segmentfault.com/a/1190000004950264
https://miracle.blog.csdn.net/article/details/106996464
https://blog.csdn.net/ITzhangdaopin/article/details/79108975
https://blog.csdn.net/chengyq116/article/details/100709443
PS:
摸索了好一阵,希望对读者有帮助。
Linux中Python自动输入sudo 密码【管道 sudo参数 stdin&stdout】的更多相关文章
- Linux中Python自动输入sudo 密码
一.背景和需求 背景: 由于docker服务进程都是以root帐号的身份运行的,所以用docker跑abpred出来的文件所有者都是root, 而我作为一般用户,操作这个文件不够权限,运行代码时需要s ...
- linux中FTP自动备份VPS脚本
服务器多了,网站也越来越多,总觉得不整个备份心里放不下心,并且有好几次rm的操作失误,造成难以挽回的损失.并且大多数的VPS提供商是不提供自动备份功能或者此功能收费价格略高.所以自己还是有必要把这个工 ...
- linux终端python自动提示
linux终端python自动提示 很多时候,在linux下编写python时, 都懒得去vi一个新文件,直接就新开一个终端, 进入python命令行模式,然后就可以写一些测试代码. 不过最悲剧的就是 ...
- Linux中Tomcat 自动设置CATALINA_HOME方法
Linux中Tomcat 自动设置CATALINA_HOME方法 在服务器部署中,我们经常会出现“在一个服务器上运行多个tomcat服务”的情况. 使用如下方法设置,可以无限复制平移扩展Tomcat, ...
- linux中Python源码安装和配置
安装 首先获取安装包,此处版本为3.7 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 解压 tar xvf Python- ...
- Python自动输入【新手必学】
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:哈喽哈嘿哈 这篇文章是我的第一篇文章,写的不好的地方,请大家多多指教哈 ...
- Linux中让终端输入变为非阻塞的三种方法
介绍 在linux下每打开一个终端,系统自动的就打开了三个文件,它们的文件描述符分别为0,1,2,功能分别是"标准输入"."标准输出"和"标准错误输出 ...
- 【Python】 linux中python命令的命令行参数
Python命令行参数 原文地址:http://blog.163.com/weak_time/blog/static/25852809120169333247925/ Python的命令行参数,提供了 ...
- 010-利用Selenium+python自动输入博客账号密码登录
from selenium import webdriver import time def OpenUrl(): # 访问网址 driver.get(url) def Login(): # 查询登录 ...
- 『学了就忘』Linux文件系统管理 — 60、Linux中配置自动挂载
目录 1.自动挂载 2.如何查询系统下每个分区的UUID 3.配置自动挂载 4./etc/fstab文件修复 上一篇文章我们说明了手动分区讲解,对一块新硬盘进行了手动分区和挂载. 但是我们发现重启系统 ...
随机推荐
- 1903021126 申文骏 Java 第七周作业 客户类测试
项目 内容 课程班级博客链接 19级信计班(本) 作业要求链接 Java 第七周作业 博客名称 1903021126 申文骏 Java 第七周作业 客户类测试 要求 每道题要有题目,代码(使 ...
- Compose Modifier Clip 圆角
Row( modifier = Modifier .fillMaxWidth() .padding(20.dp) // 圆角 .clip(RoundedCornerShape(15.dp)) .cli ...
- Jenkins在windows环境下的3种部署方式
本文主要介绍Jenkins在windows环境下的3种部署方式: (1)官网下载jenkins.msi文件直接安装.jenkins官网地址:https:/jenkins.io/zh/ (2)jenki ...
- 【Delphi7官方镜像版】delphi_7_ent_en官方镜像 阿里云盘
[Delphi7官方镜像版]「delphi_7_ent_en官方镜像.iso.exe」https://www.aliyundrive.com/s/Du9C4XfZfwG 点击链接保存,或者复制本段内容 ...
- linux-vi/vim常用操作键
命令模式: :w 将编辑的数据写入硬盘档案中(常用) :w! 若文件属性为『只读』时,强制写入该档案.不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! :q 离开 vi (常用) :q! 若 ...
- Linux基础知识2
目录和文件管理 linux以目录形式挂载(通过目录访问存储设备)文件系统,目录结构分层的树形结构. 链接:在共享文件和访问它的用户的若干目录项之间建立联系的方法,包括硬链接和软链接两种方式 linux ...
- Java基础进阶内容 - 随笔
JAVA进阶 1 对象序列化 1.1 对象要序列化要实现Serializable接口 1.2 然后通过ObjectInputStream 对象读入流来读入一个对象 new ObjectOutputSt ...
- PriorityQueue&&Function overload
用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue #include <iostream> #include ...
- Delphi之不可思议
1.--------不可思议的函数调用--开始- 开发环境D7 1 function TForm1.GetssA: string; 2 begin 3 Result:=Result+'AA'; 4 e ...
- mysqli语句的用法
改用了PHP7的环境后 mysql语句好像就不能用了.. 有点懵逼 就写一下该怎么用以免遗忘 ======= 1 链接数据库 $link=mysqli_connect('127.0.0.1:xxxx' ...