实现免密登陆脚本, expect登陆远程主机,将生成的密钥写入到目标主机, expect测试远程登陆

该脚本是一个用于Linux的bash脚本,实现了通过SSH自动登录主机并进行免密钥配置的功能。用户可以输入主机IP,脚本会提示输入用户名和密码,然后使用expect进行ssh-keygen和ssh-copy-id操作,实现无密码登录。此外,脚本还包含了一个简单的菜单,允许用户选择安装mysql或apache等任务。用户可以通过输入特定选项来退出脚本。
摘要由CSDN通过智能技术生成

脚本要求:
1)通过shift读取脚本参数
2)通过select来选择功能.例如功能有
- 安装mysql
- 安装apache
- 免密钥登陆主机
当前我们只实现免密钥登陆主机
3)通过函数封装每个功能
4)将免密钥登陆的过程可以重复进行, while 循环实现重复,需要有退出过程。当用户输入exit时,退出免密钥功能。
5)支持输入一批主机免密钥,使用数组 实现
 

##############################
#Author:席志敏                  
#Create_Time:2022-08-31
#Versios:1.0
#Mail:18935187650@189.cn
#Description:老火车
##############################
#!/bin/bash
color () {
        RES_COL=60
        MOVE_TO_COL="echo -en \\033[${RES_COL}G"
        SETCOLOR_SUCCESS="echo -en \\033[1;32m"
        SETCOLOR_FAILURE="echo -en \\033[1;31m"
        SETCOLOR_WARNING="echo -en \\033[1;33m"
        SETCOLOR_NORMAL="echo -en \E[0m"
        echo -n "$1" && $MOVE_TO_COL
        echo -n "["
        if [ $2 = "success" -o $2 = 0 ] ;then
                ${SETCOLOR_SUCCESS}
                echo -n $" ok "
        elif [ $2 = "failure" -o $2 = "1" ] ;then
                ${SETCOLOR_FAILURE}
                echo -n $"FAILED"
        else
                ${SETCOLOR_WARNING}
        fi
        ${SETCOLOR_NORMAL}
        echo -n "]"
        echo
}

#实现ssh自动登录
ssh_host() {
USER=root
PASSWORD=123456
while true;do
	read -p "请输入ip(q退出):" IP
		[[ $IP =~ ^(q|Q)$  ]] && exit;
		[[ $IP =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]] || { echo "IP不合法,请重新输入";continue; }
		break;
done
#read -p "请输入用户名:" USER
#read -p "请输入密码:" PASSWORD
expect <<EOF
set timeout 20
spawn ssh-copy-id $IP
expect {
	"yes/no" { send "yes\n";exp_continue }
	"password" {send  "$PASSWORD\n" }
}
expect eof
EOF

#while true;do
	read -p "是否继续登录$IP(y/q):" Y
       		[[ $Y =~ y|Y ]]	&& ssh $IP || continue;
		[[ $Y =~ q|Q ]] && break;

#done
#expect <<EOF
#set timeout 20
#spawn ssh $IP
#expect {
#        "root@$IPs password" { send "123456\n" }
#}
#expect eof
#EOF
}
install_mysql(){
	yum install -y mysql
}
install_apache(){
	yum install -y httpd
}
#菜单
menu() {
while true;do
	PS3="请输入指令(1-4):"
	select MENU in 安装mysql 安装apache 免密登录远程主机 退出脚本;do
		case $REPLY in
			1)
				install_mysql
				break
				;;
			2)
				install_apache
				break
				;;
			3)
				ssh_host
				break
				;;
			4)
				echo 退出!
				exit
				;;
	esac
	done
done
}
menu
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值