`
qindongliang1922
  • 浏览: 2180947 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117400
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125817
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59787
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71225
社区版块
存档分类
最新评论

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

阅读更多
在linux下面,shell脚本熟练使用,有时候可以帮助我们解决很多需要人工做的事情,有些公司比如阿里,或者京东,集群规模非常大,动辄成百上千台服务器,大量的机器如果需要人工去做某些事情,是非常低效,繁琐,容易出错的,所以每个公司都有自己的一套自动化运维的一套程序,今天,散仙在这里分享的只是利用shell+expect实现的一个自动化的部署,主要有2个功能,批量建立用户和批量配置SSH无密码双向登陆的脚本,在文末散仙,会打包上传这几个脚本,欢迎使用和测试,主要包含的东西:3个脚本外加一个hosts文件和一个使用说明书。

脚本如下:
批量建立用户的脚本cuser.sh:


if [  !  $# -eq 2  ] ; then
echo "请输入用户名和密码以空格分开!"
exit

else
name="$1"
passwd="$2"
fi


cat hosts | while read hosts
do



echo "正在$hosts上用户$name"
expect <<EOF
spawn   ssh $hosts "useradd $name; echo $name:$passwd | chpasswd" 
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "dongliang\r" ;exp_continue  }
}


EOF

echo  "成功建立"


done


root用户初始化脚本,initroot.sh
if [  ! $# -eq 2  ] ;then
echo "请输入用户密码以空格分开"
exit
else
#用户名
uname="$1"
#密码
passwd="$2"
fi


#执行检测并安装expect模块
ep=`rpm -qa | grep expect` 

if [ -z $ep   ] ; then
 echo "检测到你的系统,没有安装expect模块,准备执行安装"
 sleep 2
 yum install -y expect

else
 echo "已经安装expect模块,3秒后,开始执行ssh文件同步"
 sleep 3
fi



#公钥无ssh认证模块
cat hosts | while read host
do



echo "当前正在向$host上传输ssh文件"
expect <<EOF
spawn  scp -r .ssh/  $host:/$uname 
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "$passwd\r" ;exp_continue  }
}


EOF





echo "当前正在$host上进行公钥认证....."
sleep 2
expect <<EOF
spawn  ssh-copy-id  -i .ssh/id_rsa.pub $host 
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "$passwd\r" ;exp_continue  }
}


EOF

echo "认证成功...."

done




#切换root权限进行hosts文件分发



echo "同步本机的hosts文件到各个机器上"

sleep 1

#同步本机的hosts文件到其他各个机器上

cat hosts | while read host
do

scp -r /etc/hosts $host:/etc/


done


echo "同步hosts文件完毕"



普通用户的安装脚本,noroot.sh

if [ ! $# -eq 2  ] ; then

echo "请输入用户名密码以空格分开"
exit
else

#用户的名字
uname="$1"
#用户的统一密码
pd="$2"
fi


#公钥无ssh认证模块
cat hosts | while read host
do



echo "当前正在向$host上传输ssh文件"
expect <<EOF
spawn  scp -r .ssh/  $host:/home/$uname 
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "$pd\r" ;exp_continue  }
}


EOF





echo "当前正在$host上进行公钥认证....."
sleep 2
expect <<EOF
spawn  ssh-copy-id  -i .ssh/id_rsa.pub $host 
expect {
"*yes/no" {send "yes\r" ;exp_continue}
"*password:" {send "$pd\r" ;exp_continue  }
}


EOF

echo "认证成功...."

done




hosts文件示例:
192.168.46.28
192.168.46.29
192.168.46.33


使用说明书:
脚本主要完成的功能:
1,自动化批量建立用户
2,自动化批量双向配置SSH认证
3,测试通过Centos6.5,其他系统大同小异,如报错,可改部分代码



使用步骤:

1,配置集群的host文件,把所有机器的IP都写在hosts文件里,注意默认这几个文件解压在root根目录即可。

2,先在第一台root用户上执行 ssh-keygen -t rsa -P ''一路回车生成ssh文件

3,然后执行initroot.sh脚本,并传入root账号的用户名,密码,此脚本会首先检测系统是否安装过expect,如果没有
安装,则yum下载,如果安装过,则直接进行ssh文件拷贝,并执行公钥认证

4,执行cuser.sh脚本,并传入要建立用户的账号密码,就可以批量的在多个机器上建立用户了

5,然后拷贝root跟目下下的hosts文件和noroot.sh文件到上面建的用
户根目录下,并把权限改成用户权限
6,然后切入刚才建立的账户,同样执行第2个步骤生成ssh文件

7,最后执行noroot.sh文件,给刚才建的批量用户之间建立ssh双向无密码认证

8,至此完成,批量用户创建和SSH认证。


3
0
分享到:
评论
2 楼 hliqiang 2015-10-23  
楼主在吗
1 楼 leibnitz 2014-11-01  
当初我也是利用expect 进行non-interactive配置,现在已经有一套类似方案

相关推荐

    自动登陆ssh,批量ip脚本操作

    标题提到的“自动登陆ssh,批量ip脚本操作”是指使用脚本自动化地通过SSH(Secure Shell)协议连接到多个具有不同IP地址的远程服务器。这种方法对于系统管理员来说非常实用,可以减少手动登录每个服务器的时间和工作...

    12.Jenkins整合Ansible批量自动化部署

    通过以上步骤和实践,我们可以利用Jenkins和Ansible的强大功能,构建出一套高效、可靠的批量自动化部署系统。这不仅提高了开发团队的工作效率,也降低了运维的复杂性和出错概率,是现代DevOps实践中不可或缺的一环。

    Linux服务器自动化部署和管理.pdf

    本文主要探讨了基于PXE(Preboot Execution Environment)技术实现Linux服务器的批量自动化部署和管理。 PXE是一种允许计算机通过网络启动的技术,它结合了DHCP(Dynamic Host Configuration Protocol)、TFTP...

    批量打通SSH脚本

    在提供的压缩包文件中,"批量打通ssh脚本"很可能是这样一个结合了`expect`和`python`功能的脚本,具体实现可能因需求而异,但其核心思想是利用这两个工具自动化SSH连接流程。你可以解压文件,查看并学习其中的实现...

    ssh自动化批量运维工具等保测评抓包神器

    基于标题"ssh自动化批量运维工具等保测评抓包神器",我们可以理解这是一款利用SSH协议进行自动化运维的工具,特别针对等保(等级保护)测评中的抓包需求。等保测评是网络安全法规要求的一项重要工作,目的是确保网络...

    基于Ansible自动化运维系统批量部署LAMP架构的设计与实现.pdf

    具体而言,该方案利用Ansible的批量系统配置、批量程序部署、批量运行命令等功能,通过编写Playbook脚本来自动化完成LAMP架构的部署。Playbook是Ansible中的自动化脚本,它通过定义一系列的任务,实现系统配置和软件...

    批量交换机批处理配置

    6. **自动化脚本的使用**:最后,将这个批处理脚本保存为`.vbs`文件,双击运行即可自动开始配置。 需要注意的是,批量配置虽然高效,但也要谨慎操作,避免对网络造成不必要的中断。在实施任何批量配置之前,建议先...

    SSH2做的一个批量操作用--List

    在这个批量操作中,用户可能创建了一个脚本或配置,能够连接到多台服务器并执行一系列预定义的任务,如更新系统、启动服务、部署应用等。 描述中的“NULL”没有提供额外的信息,但根据标题,我们可以推测这可能是一...

    SSH批量执行

    SSH批量执行指的是通过编程方式自动化执行一系列SSH命令,通常用于管理系统、部署应用或者进行大规模的系统维护工作。在Windows环境下,由于操作系统本身并不直接支持SSH,因此需要借助工具来实现这一功能。 标题中...

    hadoop集群配置ssh免登录shell脚本

    在IT行业中,尤其是在分布式系统和大数据处理...利用`hadoop_ssh_auto_login.sh`脚本和`ip_hosts.txt`文件,你可以方便地自动化这个过程,使得集群管理更加高效。对于大规模的Hadoop部署,这样的自动化工具至关重要。

    批量实现ssh无密码登录

    对于数量众多的服务器,推荐使用`Expect`工具实现自动化部署。`Expect`是一个强大的脚本语言,专门设计用于自动化重复性的交互式任务,非常适合批量部署。 **1. 安装Expect及TCL** 首先需要在一台服务器上(例如...

    基于Ansible自动化运维系统批量部署LAMP架构的设计与实现.rar

    4. 安全策略:在自动化部署过程中,必须遵循最佳安全实践,例如限制SSH权限,使用密钥对认证,以及严格控制服务器端口开放。 通过 Ansible 的自动化运维,我们可以显著提高LAMP架构部署的效率和一致性,同时减少...

    UOS/统信批量维护、更新脚本

    批量维护脚本通常包含一系列自动化命令,用于执行系统升级、软件安装、配置更改、故障排查等任务。这些脚本可以通过网络从中央web服务器分发,确保所有设备都能接收到最新的更新。这不仅节省了时间,还降低了人为...

    linux批量自动等效性配置

    在Linux系统管理中,"等效性配置"(Equivalence Configuration)是指允许特定用户或用户组在不输入密码的情况下,通过SSH(Secure Shell)协议在不同的主机之间进行身份验证和远程执行命令。这对于多服务器管理和...

    Python项目自动化多服务器部署的工具

    1. SSH(Secure Shell):这是远程服务器通信的基础,大多数自动化部署工具都需要通过SSH连接来执行命令。 2. 配置管理:了解如何编写配置文件,如Ansible的playbooks或Fabric的任务函数,是实现自动化部署的关键。 ...

    批量配置linux免密登陆

    标题“批量配置Linux免密登陆”指的是通过自动化脚本实现无需密码验证就能通过SSH连接到多台Linux服务器的技术。这主要依赖于SSH密钥对认证机制,即生成一对公钥和私钥,将公钥部署到目标服务器的`~/.ssh/authorized...

    批量推送路由交换配置命令

    批量推送路由交换配置命令是网络自动化中的一个重要环节,特别是在大规模网络环境中,手动配置每台设备不仅耗时,而且容易出错。本文将深入探讨批量配置的概念,以及如何实现对路由交换设备的批量配置。 批量配置指...

    批量配置脚本命令软件.zip

    7. **持续优化**:根据实际效果和反馈,对脚本进行持续优化和调整,以提高自动化配置的准确性和效率。 在使用"批量配置脚本命令软件.zip"时,网络工程师需要熟悉目标设备的操作系统,并了解如何编写和执行脚本。...

    详解SSH如何配置key免密码登录

    ### SSH Key 免密码登录详解 #### 一、SSH Key 的基本概念与原理 SSH(Secure Shell)是一种网络协议,用于计算机...这种方式对于自动化运维、批量部署等场景非常有用,有助于提高工作效率的同时保障系统的安全性。

Global site tag (gtag.js) - Google Analytics