1. 需要在Mac上安装expect,如果已经安装过可以省略这一步
Mac 上安装一般是使用homebrew安装,在终端上输入以下命令安装。
brew install expect
如果还未安装过homebrew的朋友参考https://www.cnblogs.com/orzs/p/18306760,或自行百度。
2. 编写脚本
第一个脚本
autossh.exp
#!/usr/bin/expect -f # 定义第一个空格后的第一个变量是host set hostname [lindex $argv 0] # 定义第一个空格后的第二个变量是用户名 set username [lindex $argv 1] # 定义第一个空格后的第三个变量是密码 set password [lindex $argv 2] # 定义第一个空格后的第四个变量是端口 set port [lindex $argv 3] # 等待登录输入密码的时间,单位秒 set timeout 30 set force_conservative 1 if {$force_conservative} { set send_slow {128 .1} } # 执行登录ssh spawn ssh -p $port $username@$hostname; expect { # 出现yes/no 时输入yes "yes/no" { send -s "yes\r"; exp_continue } # 出现password 自动输入变量密码 "password" { send -s "$password\r"; } } # 执行过后把权限交给终端 interact
脚本保存为autossh.exp,执行这个脚本的命令expect autossh.exp ip 用户名 密码 端口
,例如:expect autossh.exp 127.0.0.1 root 12345 22
,这个脚本是用来ssh登录的。
第二个脚本
autossh.sh
#!/bin/bash clear RED='\033[0;31m' GRN='\033[0;32m' BLU='\033[0;34m' NC='\033[0m' # 获取执行login.exp路径 pwdpath=$(cd "$(dirname "$0")";pwd) # ssh登录脚本指令, 注意这里要跟脚本命名要一致 ssh="expect $pwdpath/autossh.exp" # menu.sh echo "---------------------------------------------------------------" echo "| __ |" echo "| _/ |_ ____ ______ ____ __ __ ____ |" echo "| \ __\/ _ \\____ \ / ___\| | \/ \ |" echo "| | | ( <_> ) |_> > / /_/ > | / | \ |" echo "| |__| \____/| __/ \___ /|____/|___| / |" echo "| |__| /_____/ \/ |" echo "---------------------------------------------------------------" # 服务器提示目录,可以根据自己需求修改 echo "--------------------------------------" echo "please enter your Server:" echo -e "(1) ${GRN}Linux Aliyun Hang Zhou ${NC}" echo "(2) Linux Tencent "echo "(3) Linux dev "echo "(4) Linux release" echo "(5) exit" echo "--------------------------------------" read -p "请选择服务器:" input case ${input} in 1) echo -e "${GRN}Linux Aliyun Hang Zhou ${NC}" $ssh ip地址 用户名 密码 端口 sleep 1;; 2) echo -e "${GRN}Linux Tencent${NC}" ssh -i 私钥地址 -p 端口 用户名@ip地址 sleep 1;; 3) echo "Linux dev" $ssh ip地址 用户名 密码 端口 sleep 1;; 4) echo "Linux release" $ssh ip地址 用户名 密码 端口 sleep 1;; 5) exit;; esac
将这个脚本保存成autossh.sh,并添加权限,注意,需要跟autossh.exp保存在相同目录
chmod +x autossh.sh
在脚本目录下使用
bash autossh.sh
就会出现类似以下界面(根据实际配置显示)![](/i/l/?n=24&i=blog/1660007/202407/1660007-20240717112931725-485070661.png)
输入选择就可以登录指定服务器