linux簡單方法實現讓普通使用者執行管理員命令

來源:互聯網
上載者:User

    某大神寫了個程式,每次伺服器開機是必須執行這個程式,這個程式必須用sudo管理員的許可權執行才有效,每次開機後都要去手動執行這條命令,懶人怎麼受的了?於是乎,我想到把這個命令添加到系統啟動項裡面,但是,普通命令好添加,必須加sudo的命令怎麼添加呢?網上百了半天沒百到,糾結,都怪自己linux沒學好,以後還要研究研究linux怎麼啟動。這條路沒走通就換一條吧。我昨天提到用pexpect實現自動互動,試了一下,很爽啊!哈哈,完美的完成了我的工作!看下面的範例程式碼:

import pexpect
def RunCmd(cmd,passwd):
    run = pexpect.spawn(cmd)
    try:
        i = run.expect(["sudo"])
        if i == 0:
            run.sendline(passwd)
            run.sendline("yes\n")
        r = run.read()
        print r
    except:
        print 'Error'
if __name__=='__main__':
    cmd = 'sudo apt-get remove emacs'
    passwd = ""

    RunCmd(cmd,passwd) 

 

下面是簡化版本,如果命令僅僅需要輸入密碼,可以這樣實現:

 #! /usr/bin/python

import pexpect
pexpect.spawn('sudo [cmd]').sendline("[password]")

 

    昨天的ssh批量遠程登入並執行命令這個問題(http://www.cnblogs.com/ma6174/archive/2012/05/25/2508378.html),有個缺陷,就是必須開啟root管理員賬戶,以管理員的身份去執行命令,這樣做是有風險的(你懂得),對於這種必須要必須要加sudo才能執行的命令,用自動互動來執行更好,這樣我們可以把兩種方式結合起來,思路是這樣的:

首先把上面的python指令碼放在某個伺服器上(本地建一個apache伺服器就行),然後ssh登入遠程主機(非root使用者),用wget讓主機去下載伺服器上面的python指令碼,然後在遠程主機上執行遠程指令碼,執行完後把這個指令碼立即刪除。

    剛才又發現一個好東西:加快ubuntu登入ssh的速度(http://www.cnblogs.com/ma6174/archive/2012/05/26/2519430.html),這樣真的很快啊!我們可以寫個程式去修改批量修改,這樣運行效率又會提升很多!

    如果機器少的話還可以設定免輸入密碼自動登入:(http://www.cnblogs.com/ma6174/archive/2012/05/26/2519458.html),這樣就不需要我的python程式了

    當然上面的工作是你必須提前做好的,一切都配置好了以後不管幹什麼都方便很多! 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.