最近想通過Python來實作一些shell命令的呼叫,以便配合做個UI,最后封裝生成APP,使用起來方便直觀,但是在處理root權限的檔案的時候,無法執行。比如多次去洗掉system/Library目錄下的某一類檔案,如何才能實作不用每次都要權限,只在運行第一次的時候給密碼授權就能執行后續多條的管理員權限命令?
不是授權執行單條命令,一定是要首次執行APP授權后就可以執行多條管理員權限的command,跟我們平時安裝APP一樣。
大神些,都有些始末方法可以實作這個呢?
uj5u.com熱心網友回復:
1 保存密碼,每次都執行 sodu2 先呼叫 so root, 然后再執行root權限命令
3 執行ssh 以root登錄,在ssh中以root身份呼叫
uj5u.com熱心網友回復:
大哥,這方法對Python來說復雜了,沒有理解我的意思。uj5u.com熱心網友回復:
保存密碼,然后:1 每次都執行 sodu
2 先呼叫 so root, 然后再執行root權限命令
3 執行ssh 以root登錄,在ssh中以root身份呼叫
uj5u.com熱心網友回復:
帶權限的Linux命令 是什么?你的APP跑在哪里?
“執行APP授權” linux上怎么搞的?對應什么操作
uj5u.com熱心網友回復:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os,sys
import getpass
def password():
password = getpass.getpass("Please input the administrator's password: ")
return password
def command(cmd):
text = os.popen( "echo %s | sudo -S %s" % (password(),cmd) ).read()
return text
print (command('rm -rf ~/Documents/10.11/Pythoner/sysman/123.sh'))
print (command('rm -rf ~/Documents/10.11/Pythoner/sysman/1234.sh'))
print (command('rm -rf ~/Documents/10.11/Pythoner/sysman/12345.sh'))
print (command('rm -rf ~/Documents/10.11/Pythoner/sysman/12346.sh'))
看代碼,現在已經處理到只差最后一步了,如何實作只輸入一次密碼,可以執行后面的無數個command的移除操作。
~/Documents/10.11/Pythoner/sysman/123*.sh 換成自己的目錄檔案位置。
uj5u.com熱心網友回復:
把password 保存下來就是了uj5u.com熱心網友回復:
如何保存和多次參考呢?能在上面的code上修改發個出來嗎
uj5u.com熱心網友回復:
還是用ssh吧 給你個例子。
https://www.cnblogs.com/wangshuo1/p/6265360.html
你用root 登錄本機(localhost或127.0.0.1),這是就是在用root用戶操作,密碼是ssh連接的時候用的,保存后可以多次連接
uj5u.com熱心網友回復:
repect我知道。關鍵是我后面要打包成應用,發給別個去運行的。所以必須要單獨能自動運行的。不用遠程。uj5u.com熱心網友回復:
不用看這么復雜的例子的呢,你估計是沒表達明白吧。核心思想一句講嗮應該就系先輸密碼,再使用一個變數存盤密碼,后面使用變數存盤的密碼執行 sudo 權限命令
uj5u.com熱心網友回復:
快一年了,難得還有人來回復,主要代碼都在上面了,你能修改一下嗎?只輸入一次密碼,然后后續的洗掉都不再輸入密碼了,關鍵是后續的互動,要能自動輸入呀!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/55741.html
