對于記不住的服務器密碼且不愿用三方工具俺簡單寫了個腳本(檢測下最近shell腳本的學習效果咋樣)
expect 是處理交互的一種腳本語言,spawn啟動指定進程 -> expect獲取指定關鍵字 -> send想指定進程發送指定指令 -> 執行完成后退出
spawn
命令,啟動新的交互進程, 后面跟命令或者指定程序expect
命令,從進程中接收信息, 如果匹配成功, 就執行expect后的動作send
命令,向進程發送字符串interact
命令,允許人為干預交互set
設置變量的值puts
輸出變量的值
1、安裝該工具
linux
yum install expect
mac
brew install expect
2、腳本內容
#!/usr/bin/expect?set web1 服務器1ipset web2 服務器2ip?puts "服務器列表"puts "1. 服務器1備注名稱"puts "2. 服務器2備注名稱"?set timeout -1expect_user -re "(.*)\n"?set num $expect_out(1,string)?switch -exact -- $num {1 {spawn ssh root@$web1expect "password:"send "服務器1密碼\r"interact}2 {spawn ssh root@$web2expect "password:"send "服務器2密碼\r"interact}default {puts "輸入序號錯誤"}}
使用
gwh@GWdeMacBook-Pro [19:16:08] [~/Desktop]
-> % expect jumpServer.exp