对于记不住的服务器密码且不愿用三方工具俺简单写了个脚本(检测下最近shell脚本的学习效果咋样)
expect 是处理交互的一种脚本语言,spawn启动指定进程 -> expect获取指定关键字 -> send想指定进程发送指定指令 -> 执行完成后退出
spawn
命令,启动新的交互进程, 后面跟命令或者指定程序expect
命令,从进程中接收信息, 如果匹配成功, 就执行expect后的动作send
命令,向进程发送字符串interact
命令,允许人为干预交互set
设置变量的值puts
输出变量的值
1、安装该工具
linux
shell
yum install expect
mac
shell
brew install expect
2、脚本内容
bash
#!/usr/bin/expect
set web1 服务器1ip
set web2 服务器2ip
puts "服务器列表"
puts "1. 服务器1备注名称"
puts "2. 服务器2备注名称"
set timeout -1
expect_user -re "(.*)\n"
set num $expect_out(1,string)
switch -exact -- $num {
1 {
spawn ssh root@$web1
expect "password:"
send "服务器1密码\r"
interact
}
2 {
spawn ssh root@$web2
expect "password:"
send "服务器2密码\r"
interact
}
default {
puts "输入序号错误"
}
}
使用
bash
gwh@GWdeMacBook-Pro [19:16:08] [~/Desktop]
-> % expect jumpServer.exp