zoukankan      html  css  js  c++  java
  • 用expect 实现切换用户时自动输入密码

    一、 安装expect

    expect作为一种交互性很强的脚本语言,它依赖于tcl,但linux系统里一般不自带安装tcl,需要手动安装。

    expect版本 5.43

    http://download.chinaunix.net/download/0003000/2845.shtml

    tcl版本 8.4.19

    http://sourceforge.net/projects/tcl/files/Tcl/8.4.19/tcl8.4.19-src.tar.gz/download

    下载两个包,分别解压

    1. 先安装tcl

      进入tcl解压目录,然后进入unix目录

      #./configure

      #make

      #make install

    2. 后安装expect

      进入expect解压目录,红色字符为当前目录

      #./configure --with-tclinclude=/*****/tcl8.4.19/generic/ --with-tclconfig=/usr/local/lib/

      #make

      #make install

    完成,测试

      #expect

      expect1.1> 

    到这里,expect安装完成。

    二、自动切换用户
    实现从普通用户“test”切换到root用户,自动输入root的密码,不用在终端提示符下执行密码输入操作。
    vi autosu.sh进入脚本编辑:

    #! /usr/bin/expect -f      //指定expect工具的路径,如果不清楚具体路径,可以用"which expect"命令来查看。

    set timeout 10    //
    spawn sudo su -          // 在expect 中用"spawn"关键字来调用命令“su - ”
    expect ":"                    //判断上次输出结果里是否包含“:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的10秒
    send "rootpasswd "    //这里expect用send将你的root密码自动输入到上面的提示符之后。
    interact                       //操作完成。

    三、一般用户开机,自动启动root权限脚本

    1、编辑切换用户脚本

    #! /usr/local/bin/expect
    set timeout 10
    spawn sudo su -
    expect ":"
    send "123456
    "          #root密码
    expect "#"
    send "cd /home/youruser
    "   #脚本所在的目录
    expect "#"
    send "./autostart_root.sh
    "  #脚本运行
    expect "#"
    send  "echo $?
    "
    sleep 10
    interact
    

    2、添加开机自启动项

    vi /etc/init.d/rc.local,在文件末尾加上:

    /home/youruser/autostart_root.sh 

    >>参考来源,请点击这里

  • 相关阅读:
    soapUI学习笔记--用例字段参数化
    python 写数据到txt 文件
    Python生成8位随机字符串的一些方法
    python datetime获取几分钟、小时、天之前的时间
    MQTT 测试工具介绍
    运用MQTT-JMeter插件测试MQTT服务器性能
    mqtt-jmeter
    ActiveMQ测试工具
    MQTT压力测试工具之JMeter插件教程
    volatile非原子性的示例
  • 原文地址:https://www.cnblogs.com/Amagasaki/p/3499003.html
Copyright © 2011-2022 走看看