expect脚本实践

自动登录机器

#!/usr/bin/expect -f
set timeout 30
set NAME root
set DEV_USER root
set DEV_PASSWD r4@Sd6F{*
#relay
spawn ssh $NAME@45.77.19.214
expect {
    "root@45.77.189.214's password:" {
        
        send "$DEV_PASSWD\n"
        exp_continue
    }
  
}
interact

自动登录机器并切换到开发目录

#!/usr/bin/expect -f

spawn ssh -i "/root/kongpingfan/pem/key.pem" ec2-user@ec2-5-210-151-52.compute-1.amazonaws.com
expect {
    # 可以用* xxx * 正则匹配,不用输入整行。
    "*-postback*" {  # 机器名称是postback
       # 不要用spawn。(spawn只能用一次?)
     send "sudo -iu work\n"
     # 要嵌套写,因为是进入work帐号后再操作。
     expect {
       "*work*" {
          send "cd /home/work/workplace/web\n"
      }
     }
    }
}

interact

自动登录机器并连接到数据库

#!/usr/bin/expect -f

spawn ssh -i "/root/kongpingfan/pem/ys-key.pem" ec2-user@ec2-35-153-157-179.compute-1.amazonaws.com
expect {
    # 可以用* xxx * 正则匹配,不用输入整行。
    "*-store*" {
       # 不要用spawn。(spawn只能用一次?)
     send "mysql -uadmin1 -h127.0.0.1 -p123456 --default-character-set=utf8mb4 -Dweb\n"
     
    }
}

interact

使用alias简化命令

运行vi ~/.bash_profile

在最后加上一行:

alias yourAlias="/Users/username/Documents/expect.sh"

保存后,打开新的terminal,现在就可以直接使用yourAlias登录开发机了。