开源shell脚本系列-服务器自动互信2.0

简介: 开源shell脚本系列-服务器自动互信2.0

640.jpg


上次写了个互信脚本,有不下10个小伙伴在后台询问是否可以做到双向互信。

波哥想了一下确实双向互信这个场景是存在的,也是普遍的。那么就顺手优化了一下这个脚本。


增加是否双向互信的参数DOUBLE_AUTH=1

默认是单向互信。


增加成功失败的统计参数。

增加互信登录超时时间的参数。


脚本如下:


#!/bin/bash
# 获取IP列表和用户名密码
SERVERS=("192.168.1.1" "192.168.1.2" "192.168.1.3")
USERNAME="username"
PASSWORD="password"
# 默认单向互信,如果DOUBLE_AUTH为1则为双向互信
DOUBLE_AUTH=1
# 互信超时时间为30秒
TIMEOUT=30
# 记录成功和失败的IP地址
SUCCESS_IP=()
FAIL_IP=()
# 循环遍历IP列表
for SERVER in ${SERVERS[@]}; do
    # 生成本地ssh key
    ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa > /dev/null
    # 复制本地公钥到远程服务器
    sshpass -p "$PASSWORD" ssh-copy-id -o ConnectTimeout=$TIMEOUT $USERNAME@$SERVER > /dev/null
    # 双向互信,需要将远程服务器的公钥复制到本地
    if [ $DOUBLE_AUTH -eq 2 ]; then
        sshpass -p "$PASSWORD" ssh -o ConnectTimeout=$TIMEOUT $USERNAME@$SERVER "ssh-keygen -t rsa -N \"\" -f ~/.ssh/id_rsa > /dev/null && echo 'Hostkey has been created.'"
        sshpass -p "$PASSWORD" ssh -o ConnectTimeout=$TIMEOUT $USERNAME@$SERVER "cat ~/.ssh/id_rsa.pub" | sshpass -p "$PASSWORD" ssh-copy-id -o ConnectTimeout=$TIMEOUT $USERNAME@$SERVER > /dev/null
    fi
    # 检查互信是否成功
    if [ $? -eq 0 ]; then
        SUCCESS_IP+=($SERVER)
    else
        FAIL_IP+=($SERVER)
    fi
done
# 记录成功和失败的IP地址到日志文件
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] Successfully established trust with the following servers: ${SUCCESS_IP[*]}" >> trust.log
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] Failed to establish trust with the following servers: ${FAIL_IP[*]}" >> trust.log
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] Total success: ${#SUCCESS_IP[@]}, total fail: ${#FAIL_IP[@]}" >> trust.log


觉的不错,别忘了帮波哥三连哦!


相关文章
|
1月前
|
运维 监控 Linux
服务器管理面板大盘点: 8款开源面板助你轻松管理Linux服务器
在数字化时代,服务器作为数据存储和计算的核心设备,其管理效率与安全性直接关系到业务的稳定性和可持续发展。随着技术的不断进步,开源社区涌现出众多服务器管理面板,这些工具以其强大的功能、灵活的配置和友好的用户界面,极大地简化了Linux服务器的管理工作。本文将详细介绍8款开源的服务器管理面板,包括Websoft9、宝塔、cPanel、1Panel等,旨在帮助运维人员更好地选择和使用这些工具,提升服务器管理效率。
|
1月前
|
运维 安全 Linux
2024 主流的开源服务器面板推荐
随着云计算和虚拟专用服务器(VPS)的普及,服务器面板工具成为了企业和个人管理服务器的得力助手。一个优秀的服务器面板不仅可以简化服务器管理任务,还可以提升工作效率和安全性。本文将为您介绍并测评几款2024年全网热门的服务器面板,包括Websoft9、宝塔、cPanel、1Panel等,帮助您找到最适合自己的管理工具。
2024 主流的开源服务器面板推荐
|
2月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
481 3
|
2月前
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
102 4
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
81 1
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
62 3
|
2月前
|
Web App开发 运维 安全
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
111 0
|
2月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
116 1
|
1月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
70 2
6种方法打造出色的Shell脚本
|
1月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
65 1