• Linux下Expect 完成自动输入密码


    今天要开发一个定时任务,然后加入cron列表中。但是有个问题摆在眼前,脚本的执行中需要输入数据库密码(貌似5.1版本以上不允许在-p后直接加密码,会报错)

    mysql -u root -p << SQL
    use db;
    set names utf8;
    `cat task.sql`
    SQL

    运行上述代码后,会提示:

    Enter password:

    expect可以帮助我们完成这件事情:

    将上述代码保存到一个文件中:db.sh

    并且编写如下代码保存为db.exp:

    #!/usr/bin/expect -f
    spawn db.sh
    expect "Enter password: "
    send "password
    "
    interact

    第一行指示了这个脚本要用哪个程序来运行;

    第二行是重点,在EXPECT下启动了一个我们要执行的程序;

    第三行也是重点,我们要告诉expect,当什么信息出现时需要expect帮助我们完成交互;

    第四行就是出现输入密码的提示时,要发送的内容;

    第五行的意思是保持交互,不要退出。如果没有这一句,脚本成功登录数据库后,会立即退出。

    执行

    $expect db.exp

    补充:

    使用脚本文件的例子--实现自动输密码
    #!/usr/bin/expect -f
    set password 123456
    #download
    spawn scp root@192.168.1.218:/root/a.wmv /home/yangyz/
    set timeout 300 
    expect "root@192.168.1.218's password:"
    set timeout 300 
    send "$password "
    set timeout 300 
    send "exit "
     
    ssh实现自动登录,登陆后sudo至root权限 并停在登录服务器上

    #!/usr/bin/expect -f

    set password 123456

    spawn ssh tdweb@192.168.99.59

    set timeout 300

    expect {

    "*yes/no" { send "yes "; exp_continue}

    "*password:" { send "$password " }

    }

    set timeout 300

    expect "$*"

    send "sudo su "

    expect "*password for *:"

    send "$password "

    interact

  • 相关阅读:
    第二章 1.绘制文本
    在Windows Mobile 5中使用DirectShow控制摄像头转
    写会议纪要也是需要水平滴
    注重实效的程序员(The Pragmatic Programmer)[转载]
    项目经理面试指南(上)[转载]
    上海西门子培训序
    周末桂林游
    我们应该如何面试程序员/技术人员?
    Erlang Code Auto Reloader
    新车落地几种常见的配件加装建议
  • 原文地址:https://www.cnblogs.com/wangxusummer/p/4128661.html
Copyright © 2020-2023  润新知