1. 安装expect
<code>brew install expect </code>
2. 编写expect登录脚本
输入 touch login.exp 新建脚本
接着输入 vim ./login.exp 编辑脚本,代码如下:
<code>#!/usr/bin/expect -f
# 定义第一个空格后的第一个变量是host
set hostname [lindex $argv 0]
# 定义第一个空格后的第二个变量是用户名
set username [lindex $argv 1]
# 定义第一个空格后的第三个变量是密码
set password [lindex $argv 2]
# 等待登录输入密码的时间,单位秒
set timeout 30
set force_conservative 1
if {$force_conservative} {
set send_slow {128 .1}
}
# 执行登录ssh
spawn ssh $username@$hostname;
expect {
# 出现yes/no 时输入yes
"yes/no" {
send -s "yesr"; exp_continue
}
# 出现password 自动输入变量密码
"password" {
send -s "$passwordr";
}
}
# 执行过后把权限交给终端
interact
</code>
这样就可以通过命令expect ./login.exp IP地址 用户名 密码来进行登录服务器了。
3. 编写bash脚本
分别输入
<code>touch sshlogin.sh vim ./sshlogin.sh </code>
在脚本中粘贴以下代码(注意修改脚本中的ip地址用户名密码信息):
<code>#!/bin/bash
clear
RED=' 33[0;31m'
GRN=' 33[0;32m'
BLU=' 33[0;34m'
NC=' 33[0m'
# 获取执行login.exp路径
pwdpath=$(cd "$(dirname "$0")";pwd)
# ssh登录脚本指令, 注意这里要跟脚本命名要一致
ssh="expect $pwdpath/login.exp"
# menu.sh
echo "---------------------------------------------------------------"
echo "| __ |"
echo "| _/ |_ ____ ______ ____ __ __ ____ |"
echo "| __/ _ \____ / ___| | / |"
echo "| | | ( <_> ) |_> > / /_/ > | / | |"
echo "| |__| ____/| __/ ___ /|____/|___| / |"
echo "| |__| /_____/ / |"
echo "---------------------------------------------------------------"
# 服务器提示目录,可以根据自己需求修改
echo "--------------------------------------"
echo "please enter your Server:"
echo -e "(1) ${GRN}Linux Tencent qinian${NC}"
echo "(2) Linux Tencent(disabled)"
echo "(3) exit"
echo "--------------------------------------"
read -p "请选择服务器:" input
case ${input} in
1)
echo -e "${GRN}Linux Tencent qinian${NC}"
$ssh ip地址 用户名 密码
sleep 1;;
2)
# echo -e "${GRN}Linux Tencent${NC}"
# $ssh ip地址 用户名 密码
sleep 1;;
3)
exit;;
esac
</code>
4. 修改脚本权限
<code>chmod 755 sshlogin.sh </code>
修改完成后就可以使用 ./sshlogin.sh 命令来执行脚本
5. 运行脚本
输入 ./sshlogin.sh 命令来执行脚本,出现以下界面:

输入序号后回车即可。

【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!