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

  • 相关阅读:
    数据库的创建,数据的增删改查
    Ubuntu系统下查看显卡相关信息
    分布式文件系统测试方法与测试工具
    分布式存储产品的测试实践及心得
    sql注入
    web测试项目总结
    Ubuntu系统下使用Jenkins进行项目的自动构建还是项目回滚方法
    Ubuntu系统下Jenkins的git构建基本方法
    Ubuntu系统下在github中新增库的方法
    ADO.NET复习总结(2)--连接池
  • 原文地址:https://www.cnblogs.com/wangxusummer/p/4128661.html
Copyright © 2011-2022 走看看