Shell脚本实现SSH免密登录及批量配置管理(2)

我们观察pssh的参数,我们发现-f是指定主机文件,这给我们的潜在意思是,我们可以将ip放置在某个文件中在使用pssh的时候直接调用该文件即可,这好像与我们所想的不谋而合。于是我立马将创建了几台虚拟机进行试验,首先ip地址存储在一个ip.txt的文件中,然后试着执行了一下,很好,效果不错!这里只介绍了一些用法,如果你的工作需要用到你可以研究一下其他的参数。

wKiom1nZ1OPT8KQbAAAq5o_QqBg666.png

 我去查看了一下两台虚拟机的负载情况,上图显示出来了执行结果,说明可行。当然了我之前手动实现了到两台主机的免密登录。

SHELL脚本实现

      上面的过程,我们一步步的实现了ssh免密码登录,使用pssh工具实现批量部署管理,当然了我只是去目标主机看了下负载情况,你可以根据你公司的业务编写需要配置或部署的脚本,让后使用pssh推上去并执行即可。那么下面将用一个脚本来实现上述这一切操作。

[root@vinsent app]# cat ssh_auto.sh 

#!/bin/bash

#!/bin/bash

#------------------------------------------#

# FileName:             ssh_auto.sh

# Revision:             1.1.0

# Date:                 2017-07-14 04:50:33

# Author:               vinsent

# Email:                hyb_admin@163.com

# Website:             

# Description:          This script can achieve ssh password-free login, 

#                       and can be deployed in batches, configuration

#------------------------------------------#

# Copyright:            2017 vinsent

# License:              GPL 2+

#------------------------------------------#

[ ! -f /root/.ssh/id_rsa.pub ] && ssh-keygen -t rsa -p '' &>/dev/null  # 密钥对不存在则创建密钥

while read line;do

        ip=`echo $line | cut -d " " -f1`             # 提取文件中的ip

        user_name=`echo $line | cut -d " " -f2`      # 提取文件中的用户名

        pass_word=`echo $line | cut -d " " -f3`      # 提取文件中的密码

expect <<EOF

        spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $user_name@$ip   # 复制公钥到目标主机

        expect {

                "yes/no" { send "yes\n";exp_continue}     # expect 实现自动输入密码

                "password" { send "$pass_word\n"}

        }

        expect eof

EOF

  

done < /root/host_ip.txt      # 读取存储ip的文件

  

pscp.pssh -h /root/host_ip.txt /root/your_scripts.sh /root     # 推送你在目标主机进行的部署配置

pssh -h /root/host_ip.txt -i bash /root/your_scripts.sh        # 进行远程配置,执行你的配置脚本

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ff58391b2fe0e85db8c8e0e49fad4745.html