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


    某大神寫了個程序,每次服務器開機是必須執行這個程序,這個程序必須用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程序了

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



免責聲明!

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



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