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:

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

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM