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的文檔:

 

 

四、成功截圖

 

 

 

五、參考文檔

//www.cnblogs.com/chengmo/archive/2010/10/21/1856577.html   # 管道

//www.cnblogs.com/badboy200800/p/11121880.html     # stdin和stdout

//blog.csdn.net/u013948858/article/details/78429954

//segmentfault.com/a/1190000004950264

//miracle.blog.csdn.net/article/details/106996464

//blog.csdn.net/ITzhangdaopin/article/details/79108975

//blog.csdn.net/chengyq116/article/details/100709443

 

PS:

摸索了好一陣,希望對讀者有幫助。