zoukankan      html  css  js  c++  java
  • 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程序了

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


  • 相关阅读:
    C# 不用添加WebService引用,调用WebService方法
    贪心 & 动态规划
    trie树 讲解 (转载)
    poj 2151 Check the difficulty of problems (检查问题的难度)
    poj 2513 Colored Sticks 彩色棒
    poj1442 Black Box 栈和优先队列
    啦啦啦
    poj 1265 Area(pick定理)
    poj 2418 Hardwood Species (trie树)
    poj 1836 Alignment 排队
  • 原文地址:https://www.cnblogs.com/ma6174/p/2519427.html
Copyright © 2011-2022 走看看