一、背景和需求
背景:
由於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:
摸索了好一陣,希望對讀者有幫助。