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程序了

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值