• 在shell脚本中使用sudo


        今天让我的ubuntu 64位 在宿舍接入了校园网,使用的依旧是xrgsu,xrgsu这个渣渣只有32位,木有64位,于是安装了32位库,安装了xrgsu,然后为了避免每次认证都要输入帐号和密码,利用expect执行认证脚本,这个脚本叫做ruijie.sh(来自西电开源wiki)。

        然而人的懒惰是无极限的。我的wlan0,也就是无线网卡每次开机的时候应该会是打开的,而且由于我还在其它地方连接其它类型的网络,比如实验室的无线网络,于是我想再写一个脚本,在执行ruijie.sh之前先根据wlan0是不是打开来做一点处理。

        很明显,要是wlan0打开的话,我需要关闭wlan0,用命令

    ifconfig wlan0 down

    就可以关闭。由于我是telnetning用户,所以我需要在命令前面加上sudo,像这样

    sudo ifconfig wlan0 down

    但是平常在tty执行的时候,会弹出"[sudo]password for telnetning:",我输入密码就能执行,但是在脚本中显然不能人工输入。顺便提一下,更改sudoers文件其实也是起不到什么作用的。首先想到的就是用expect,但是,这个,或许有更简单点的方法。

    在man sudo中我们可以看到这么一段:

    -S          The -S (stdin) option causes sudo to read the password from
                       the standard input instead of the terminal device.  The
                       password must be followed by a newline character.

    翻译过来就是  sudo 的 -S 选项允许从stdin读入密码,那这样就好办了。

    测验一下:

    echo "password" | sudo -S visudo

    用echo将我的password传递给sudo了,于是顺利执行。

    这下就好解决我的问题了:

    echo “password” | ifconfig wlan0 down

    比较简单的一种方法,呵呵

  • 相关阅读:
    线程池:第二章:线程池实际中使用哪一个
    实战:第五章:EZDML修改数据类型
    面试:第十四章:大厂中高级java程序员面试题
    服务网关Zuul路由转发
    启动zipkin服务
    安装Elasticsearchhead
    Zuul 路由熔断
    Unable to find local grunt.
    Kibana安装
    sleuth zipkin链路追踪
  • 原文地址:https://www.cnblogs.com/telnetning/p/3084826.html
Copyright © 2020-2023  润新知