- 簡單鏈接(A->B)
假設(shè)你要連接的服務(wù)器地址為123.123.123.123,端口號(hào)為8888偶洋,用戶名為root,密碼為mimamima
編寫shell文件"login_server.sh"距糖,并放置于目錄/usr/local/bin/下(該目錄可任意指定)玄窝,文件內(nèi)容如下:
spawn ssh -p 8888 root@123.123.123.123
expect "password:"
send "mimamima\r"
interact
expect eof
打開 iTem2 - Profiles - Open Profiles... - Edit Profiles...
Name欄任意填寫一個(gè)名稱
在Command欄選則Command并輸入:
expect /usr/local/bin/login_server.sh
關(guān)閉即保存
之后就可以通過 Profiles 下的列表快速登陸服務(wù)器了
轉(zhuǎn)載于:https://www.cnblogs.com/surfzjy/p/8681362.html
- 復(fù)雜鏈接(A -> 跳板機(jī) -> B -> xx -> xx)
主要命令:expect
#!/bin/bash
# 登錄信息
relay_host=".com" # relay機(jī)器的用戶和地址
passwd="xxx" # relay用戶的密碼
secret="xxxxxxx" # 計(jì)算動(dòng)態(tài)碼的密鑰串
user_host="rd@192.168.10.119" #xxx2機(jī)器
passwd_relay="xxxx"
c_mysql="mysql -h192.168.5.58 -P6041 -uzyb_rd_r -ppdrucy2Jw9pu4Su"
# 本腳本運(yùn)行的絕對(duì)地址
SOURCE="$0"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
# 獲得動(dòng)態(tài)碼 例如 014521-07
# ComputeCode是一個(gè)可執(zhí)行文件,傳入secret來計(jì)算動(dòng)態(tài)碼
# 詳情請(qǐng)見博客: http://blog.csdn.net/qq_27068845/article/details/79636033
code_second=`$DIR/ComputeCode $secret`
# 驗(yàn)證碼 截取014521-07中前6位
code=${code_second:0:6}
# 剩余秒數(shù) 此驗(yàn)證碼剩余可用時(shí)間(秒)
second=${code_second:7:2}
# 打印正常文字,
# echo "動(dòng)態(tài)碼:$code , 剩余可用秒數(shù): $second s"
# 輸出 藍(lán)色字, 谷歌的二次認(rèn)證是一次性密碼悍引,30秒內(nèi)只能使用一次
echo "\033[34m 動(dòng)態(tài)碼:$code , 剩余可用秒數(shù): $second s \033[0m"
# 上面的目的是為了算出動(dòng)態(tài)密碼哆料,下面才是主要交互。如果不需要谷歌二次認(rèn)證吗铐,可以略過
# expect調(diào)用login腳本
# expect $DIR/input.sh $relay_host $code $passwd $user_host
expect -c "
set timeout 10;
spawn ssh $relay_host;
expect {
\"Verification code:\" { send \"$code\n\"; exp_continue}
\"Password:\" { send \"$passwd\n\"; exp_continue}
\"*relay*\" { send \"user_host \n\";}
};
interact
"
參考:https://blog.csdn.net/qq_27068845/article/details/79636033