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 ./login.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.shecho "---------------------------------------------------------------" 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 "请选择服务器:" inputcase ${input} in1)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.sh
,就会出现以下界面:
输入选择就可以登录指定服务器
3.需要注意的地方
(1)在使用autossh.sh执行脚本的时候系统出现如下提示
这是因为没有执行的权限,只需要执行chmod +x autossh.sh
添加权限即可。