`

shell脚本部署无密码访问

 
阅读更多
为了实现一些组件的自动化部署,可能要设置服务器的免密访问比较方便,最后实现了自动化部署密码脚本,以下为实现代码逻辑。代码比较庞大,不能一一道出了。
#!/bin/bash

ips=( '10.100.112.79' '10.100.112.203' '10.100.112.204' '10.100.112.205' '10.100.112.95' '10.100.112.125' ) //所有关联ip
masterLenth=4 //ips集合前几个需要配置无密访问
gname=hgroup
uname=root //无密访问账号(要先生成root无密访问权限)
password="123456" //无密访问密码
currpath=$PWD

hostip=` /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" `//获取本机ip ,
echo "host_ip$hostip"
#如果是root权限,先生从root免密密匙
if [ "$uname" = "root" ];then
ssh root@${ips[i]} yum install -y expect
expect <<EOF
spawn ssh-keygen -t rsa
expect {
"*password:"    {
send "$password\n";
exp_continue
}
"*id_rsa):"    {
send "\n";
exp_continue
}
"*(y/n)?" {
send "y\n"
exp_continue
}
"*passphrase):" {
send "\n"
exp_continue
}
"*again:" {
send "\n"
}
}
expect eof
EOF
#initSshdConfig初始化免密访问的sshd-config文件,initSshdConfig代码链接本博客sshd_config无密访问的处理
sh $currpath/initSshdConfig.sh  $hostip  $currpath $hostip
fi

#给所有机器新增账号
for ip in ${ips[@]}
do
#如果是root账号,先授权root免密访问其它机器权限
if [ "$uname" = "root" ];then
sh $currpath/resrsa.sh $ip $uname $password
echo "$hostip------------------>$ip"
fi

if [ "$ip" = "$hostip" ];then
echo  "$hostip"
   sh $currpath/useradd.sh $gname $uname $password
#    rm -rf /usr/$uname/.ssh
#   sh apecttest.sh $gname $uname $name $ip

else
#   echo ${ip}
#   ssh ${ip} mkdir -p $currpath -m 777
#   scp -r $currpath/base root@${ip}:$currpath/
#   scp $currpath/useradd.sh root@${ip}:$currpath/
   if [  "$uname" -ne "root" ];then
#新增账号http://lyongq04.iteye.com/blog/2297255
   ssh ${ip} $currpath/useradd.sh $gname $uname $password
   fi
fi
done

#给ips前masterLenth服务器赋予免密访问所有机器的权限,这类机器暂时简称master
for((i=0;i<masterLenth;i++))
do
echo "master ${ips[i]}"
#scp $currpath/initSshdConfig.sh root@${ips[i]}:$currpath/
sh $currpath/initSshdConfig.sh ${ips[i]} $currpath $hostip
if [ "${ips[i]}" != "$hostip" ];then
# scp /etc/ssh/sshd_config root@${ips[i]}:/etc/ssh
scp $currpath/resrsa.sh root@${ips[i]}:$currpath/
fi

#远程为master 账号生产密匙
#if expect not install
ssh root@${ips[i]} yum install -y expect
if [[ "$uname" != "root" || "$uname" == "root" && "${ips[i]}" != "$hostip" ]];then
echo "$hostip ssh-keygen-------------------------------------------------------->>${ips[i]}"
expect <<EOF
spawn ssh $uname@${ips[i]} ssh-keygen -t rsa
expect {
"*password:"    {
send "$password\n";
exp_continue
}
"*id_rsa):"    {
send "\n";
exp_continue
}
"*(y/n)?" {
send "y\n"
exp_continue
}
"*passphrase):" {
send "\n"
exp_continue
}
"*again:" {
send "\n"
}
}
expect eof
EOF
fi
done
#给所有master授权免密访问所有机器
for ip in ${ips[@]}
do
for((i=0;i<masterLenth;i++))
do
if [ "${ips[i]}" = "$hostip" ];then
sh $currpath/resrsa.sh $ip $uname $password
else
ssh root@${ips[i]} "$currpath/resrsa.sh $ip $uname $password"
fi
done
done
分享到:
评论

相关推荐

    100个shell脚本合集

    在shell脚本中,可以通过监控Nginx日志来识别异常IP,例如当某个IP在短时间内访问次数超过设定阈值(如10次),则将其加入iptables防火墙的黑名单,阻止其继续访问。同时,脚本会记录被屏蔽的IP到 `/tmp/drop_ip.log...

    常用shell 脚本,dos攻击防范,

    常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析...

    18个Linux Shell脚本经典案例视频.zip

    18个Linux Shell脚本经典案例(1-18) 脚本 Dos攻击防范(自动屏蔽攻击IP) Linux系统发送告警脚本 MySQL数据库备份单循环 MySQL数据库备份多循环 nginx 访问访问日志按天切割 nginx nginx访问日志分析脚本 一键查看...

    hadoop环境部署自动化shell脚本(伪分布式、完全分布式集群搭建).docx

    【Hadoop环境部署自动化Shell脚本】是一种高效的方法,用于快速搭建Hadoop集群,无论是用于学习还是开发。本文档提供了一个详细的脚本,涵盖了从Java环境配置到Hadoop集群的完全分布式安装的所有步骤,旨在降低...

    自动化部署EMQX Shell脚本

    在标题和描述中提到的“自动化部署EMQX Shell脚本”,意味着我们将讨论如何通过编写Shell脚本来实现EMQX的自动部署,这在系统运维和持续集成(CI/CD)流程中是非常常见的需求。编写自动化脚本可以提高效率,减少人为...

    Linux Shell脚本经典案例合集

    18个Linux Shell脚本经典案例合集,内含: Dos攻击防范(自动屏蔽攻击IP).sh Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx访问日志分析脚本.sh...

    seata-1.5.1 交互式自动部署Shell脚本

    本文将详细讲解如何利用提供的 "seata-1.5.1 交互式自动部署Shell脚本" 在 CentOS 7.9 操作系统上进行安装。 首先,让我们理解 "seata-install.sh" 这个脚本的作用。这是一个 Shell 脚本,通常用于自动化执行一系列...

    oraclep安装shell脚本

    同时,由于Oracle数据库的复杂性,安装过程中可能会遇到各种问题,因此了解Linux基础、Oracle数据库原理以及Shell脚本编写技巧对于成功部署至关重要。 总结来说,`oraclep安装shell脚本`是Linux环境下简化Oracle...

    vsftp快速安装shell脚本

    在Linux中,shell脚本是一种用bash或其他shell语言编写的文本文件,用于自动化执行一系列命令。在这个案例中,`vsftp-install.sh`很可能是用来自动化安装VSFTPD服务端的过程,包括: 1. 检查系统环境,确保满足安装...

    shell入门到进阶,脚本机动化

    此外,还可以通过shell脚本找出访问频率最高的前100个页面,为网站优化提供依据。 ### 自动化备份恢复 为了确保数据的安全性,shell脚本可用于实现MySQL数据库的完全备份与增量备份,并结合`crond`定时任务自动...

    shell自动化部署批量建立用户和批量SSH配置

    标题中的“shell自动化部署批量建立用户和批量SSH配置”指的是使用Linux Shell脚本来自动化创建多个用户账户,并且配置这些用户可以使用SSH进行无密码登录。这个过程在IT运维中非常常见,特别是在设置服务器集群或者...

    shell脚本自动安装mysql-5.5.30实用.pdf

    在Linux环境中,编写Shell脚本自动化安装MySQL数据库是一个常见的需求,特别是对于系统管理员和开发者来说,能够快速、一致地部署MySQL服务是至关重要的。这个名为“shell脚本自动安装mysql-5.5.30实用.pdf”的文档...

    centos 7 MySQL8 离线一键自动安装脚本

    - 使用shell脚本语言编写安装脚本,实现一键自动安装。脚本中需要包含以下步骤: - 安装依赖包:CentOS 7可能缺少一些MySQL8所需的库,如`libaio`,确保先安装它们。 - 添加MySQL的GPG密钥:`rpm --import ...

    centos6.5 LNMP环境搭建Shell脚本及配置

    首先,"CentOS6.5 LNMP环境搭建Shell脚本"是自动化安装和配置这四个组件的关键。通过运行一个精心编写的Shell脚本,可以大大简化这个过程,节省时间和精力。通常,这种脚本会包括以下步骤: 1. 更新系统:使用`yum ...

    shell100例.pdf

    【shell脚本应用实例】 1. **网络主机状态检测**:使用`ping`命令批量测试192.168.4.0/24网段中的主机状态,通过脚本自动化实现。对于开机的主机,`ping`命令将返回响应,而关机的主机则不会响应。可以结合`for`...

    shell脚本自动配置Linux基础环境,安装jdk,tomcat,mysql

    首先,**shell脚本**是Linux/Unix系统中的一种命令解释器,用于执行一系列命令。它允许用户编写自定义的脚本来实现自动化任务,如系统管理、文件操作、程序部署等。`install.sh`就是这样一个脚本,通过运行它,我们...

    centos7安装mysql5.x脚本

    在这个脚本中,你可以设置root用户的密码,删除匿名用户,禁止远程root登录,以及删除测试数据库和加载数据。 如果想要通过脚本自动化这些步骤,可以创建一个bash脚本,例如`install_mysql.sh`,包含以上所有命令。...

    encpass.sh:在shell脚本中使用加密密码的轻型解决方案

    `encpass.sh` 是一个轻量级的shell脚本,它提供了一种简单而安全的方法来处理和存储密码,尤其适用于自动化脚本和配置管理场景。本文将深入探讨`encpass.sh`的工作原理、使用方法以及它在实际应用中的价值。 ### 一...

    对Shell 脚本加密的方法

    然而,由于Shell脚本通常是以纯文本形式存储,这使得它们容易被他人阅读甚至修改,从而可能泄露敏感信息(例如用户名、密码、路径、IP地址等)。为了保护这些敏感信息不被未经授权的人员获取,对Shell脚本进行加密变...

Global site tag (gtag.js) - Google Analytics