Mac下如何实现ssh自动输入密码并登录
在Mac 终端登录linux服务器是需要使用ssh 用户名@ip地址
命令,再输入密码才能登录,如下图
在服务器比较多的情况下,不可能记住所有ip和密码,每次都需要找半天,所以突然想到使用shell脚本来自动登录,废话不多说,开始进入主题。
1.需要在Mac上安装expect,如果已经安装过可以省略这一步
Mac 上安装一般是使用homebrew安装,在终端上输入brew install expect
可以安装,如果还未安装过homebrew的童鞋参考https://www.jianshu.com/p/a2d11ad9e702
或自行百度。
2.编写脚本
第一个脚本
#!/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 "yes\r"; exp_continue
}
# 出现password 自动输入变量密码
"password" {
send -s "$password\r";
}
}
# 执行过后把权限交给终端
interact
脚本保存为login.exp,执行这个脚本的命令expect ./login.exp ip 用户名 密码
,例如:expect ./login.exp 127.0.0.1 root 12345
,这个脚本是用来ssh登录的。
第二个脚本
#!/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/login.exp"
# menu.sh
echo "---------------------------------------------------------------"
echo "| __ |"
echo "| _/ |_ ____ ______ ____ __ __ ____ |"
echo "| \ __\/ _ \\____ \ / ___\| | \/ \ |"
echo "| | | ( <_> ) |_> > / /_/ > | / | \ |"
echo "| |__| \____/| __/ \___ /|____/|___| / |"
echo "| |__| /_____/ \/ |"
echo "---------------------------------------------------------------"
# 服务器提示目录,可以根据自己需求修改
echo "--------------------------------------"
echo "please enter your Server:"
echo -e "(1) ${GRN}Linux Aliyun Han 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 Han Zhou${NC}"
$ssh ip地址 用户名 密码
sleep 1;;
2)
echo -e "${GRN}Linux Tencent${NC}"
$ssh ip地址 用户名 密码
sleep 1;;
3)
echo "Linux dev"
$ssh ip地址 用户名 密码
sleep 1;;
4)
echo "Linux release"
$ssh ip地址 用户名 密码
sleep 1;;
5)
exit;;
esac
将这个脚本保存成sshlogin.sh,在脚本目录下使用./sshlogin.sh
,就会出现以下界面:
输入选择就可以登录指定服务器
3.需要注意的地方
(1)在使用./sshlogin.sh
执行脚本的时候系统出现如下提示
这是因为没有执行的权限,只需要执行chmod +x sshlogin.sh
添加权限即可。
(2)注意两个脚本必须处于同一个目录下,注意替换自己的服务器参数
如果对你有帮助,请点个赞吧!