# !/bin/bash

#修改主机名与IP映射,添加至 /etc/hosts
IP_hostname="masterIP docker1
salve1IP docker2
salve2IP docker3"
function editHosts(){
   cat >> /etc/hosts <<EOF
$IP_hostname
EOF
}
#editHosts
#校园网登陆,敏感信息
function connect(){
  #connect internet
}
function disconnect(){
  #disconnect internet
}

PASSWORD=hadoop
SERVERS="masterIP salve1IP salve2IP"
#拷贝公钥
function auto_ssh_copy_id() {
    expect -c "set timeout -1;
        spawn ssh-copy-id $1;
        expect {
            *(yes/no)* {send -- yes\r;exp_continue;}
            *assword:* {send -- $2\r;exp_continue;}
            eof        {exit 0;}
        }";
}

function ssh_copy_id_to_all() {
    cd /root/.ssh
    for SERVER in $SERVERS
    do
        auto_ssh_copy_id $SERVER $PASSWORD
    done
}

#安装ssh服务
function init_ssh(){
    #联网
    connect
    #先删除ssh秘钥
    rm -rf /root/.ssh
    #生成ssh秘钥
    cd ~
    yum install -y expect
    yum install -y openssh-clients
    yum install -y openssh-server
    #生成秘钥
    expect -c "set timeout -1;
        spawn ssh-keygen -t rsa;
        expect {
            *Enter* {send -- \r;exp_continue;}
        }";
    #发送公钥
    ssh_copy_id_to_all
    editHosts
    cd ~
    i=1
    for SERVER in $SERVERS
    do
        scp /etc/hosts  root@$SERVER:/etc/hosts
    done
    disconnect
}

function init_hostname(){
    connect
    #确定安装了ssh服务
    #安装ansible
    yum install -y epel-release
    yum install -y ansible
    #配置 /etc/ansible/hosts 文件 将所要改变的主机对应的IP地址 起个别名放入
    cat > /etc/ansible/hosts <<EOF
    [testall]
    salve2IP ansible_ssh_pass=123
    salve1IP ansible_ssh_pass=123
EOF

cat > changehostname.yml <<EOF
#这个别名 [testall] 与changehostname.yml中的hosts对应的名称一致
- hosts : testall
  remote_user : root
  tasks :
  - name : show hostname
    shell : hostname
  - name : show ip
    command : ip a
  - hostname : name=docker{{ ansible_default_ipv4.address.split('.')[-1] }}

EOF

##有瑕疵,能力有限不能实现自增分配
#ansible_default_ipv4.address.split('.')[-1] 取IP分数组最后一组作为后缀
    #执行
    ansible-playbook changehostname.yml
    disconnect
}

init_ssh

init_hostname

shell脚本实现从master节点批量配置salve节点(主机名有瑕疵,IP映射,ssh服务)相关推荐

  1. linux脚本定时拷贝文件,使用Linux shell脚本实现FTP定时执行批量下载指定文件

    使用FTP定时批量下载指定文件的shell脚本,具体实例介绍如下所示: 1.目标FTP服务器地址 #FTP服务器地址 ip=10.19.15.23 2.FTP账号和密码 u=账号 p=密码 3.使用m ...

  2. Shell脚本经典案例:探测批量主机是否存活

    Shell脚本经典案例:探测批量主机是否存活 文章目录 Shell脚本经典案例:探测批量主机是否存活 1.利用数组实现 2.变量方式实现 3.函数实现 一开始我们用ping1次就下定结果说对方主机不通 ...

  3. linux配置和查看主机名

    linux中配置主机名的作用 *主机名的作用是为了方便主机与主机的相互通信 linux修改主机名 *修改主机名的文件vim /etc/hostname,我将主机名改为了master1 *hostnam ...

  4. 如何配置Apache虚拟主机?(基于IP、基于端口、基于域名)

    一.Apache虚拟机配置前的准备工作 1.下载yum源 2.安装yum包 3.安装httpd包 4.查看并关闭selinux 5.取消中心主机 cd /etc/httpd/conf vim http ...

  5. 【RHCSA】配置网络和主机名

    文章目录 前言 问题 配置网络 修改hostname nmcli的用法 前言 配置网络和主机名是RHCSA考试的第一题,2020年8月RHCE,RHCA考试都是用的8的系统. 破解root密码是必会的 ...

  6. shell脚本自动化创建虚拟机的基本配置--tomcat--mysql--jdk--maven---妈妈再也不用担心我不会配置虚拟机了!

    文章目录 自动化shell脚本 一:虚拟机初始化 二:jdk自动化安装 三:maven自动化安装 四:tomcat自动化安装 五:mysql自动化安装 自动化shell脚本 ps:此处安装的jdk,m ...

  7. Linux 配置网卡、主机名(基础配置、网卡会话配置、网卡绑定配置)

    目录 配置网卡基本信息 通过nmcli命令配置网卡 通过配置网卡文件配置网卡 通过nmtui命令配置网卡 通过nm-connection-editor命令配置网卡 网卡高级配置 配置网络会话 配置网卡 ...

  8. 一章: CentOS6.5 网络配置、修改主机名、添加硬盘、压缩——解压方法、VNC—server配置

    1,配IP ,修改网络配置文件 配置网卡 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=00:50:56:83: ...

  9. Linux配置网络与主机名

    配置网络主机名和SSH免密登录 设置主机名-->静态(持久的)  hostname 1. 直接修改文件 vim /etc/hostname  > 修改完毕后不会立即生效:reboot.sy ...

  10. shell脚本启动kafka集群的多台节点

    [README] 由于集群有多台机器,启动kafka ,查看其状态,都需要每台机器去执行命令, 可以写个脚本基于ssh免密登录批量执行: [1]启动kafak (kk.sh) #!/bin/bash ...

最新文章

  1. 学生每日计划表_早上6:13,很多教室的灯就亮了!高考还有10天,你都想象不到这些学生有多拼...
  2. MS-SQL分页not in 方法改进之使用row_number
  3. rabbitmq安装与配置(windows)亲测有效!!!
  4. 华为ensp常用简单命令(二)
  5. libcurl上传文件
  6. MXone影视自适应模板
  7. 一款性能调优神器,1分钟定位性能瓶颈!!!
  8. C++_类和对象_对象特性_构造函数和析构函数---C++语言工作笔记040
  9. 9-9 原生安装-1
  10. 取消管理员取得所有权_苏州即将全面取消房迁落户!有房就能落户的时代结束了!...
  11. 客户端主动断开连接_Go实现客户端和服务器抓包分析TCP三次握手和断开操作
  12. 卫星通信常用专业词汇
  13. JS实现经纬度坐标转成XY坐标
  14. 大事务的处理方式对比
  15. 无线网络经常掉线的解决办法
  16. 这就是你要的廉价,廉价版iPhoneX到底便宜在哪?
  17. javaScript:实现倒计时定时器setInterval的开始计时、暂停计时、停止计时效果
  18. 2008 r2 server sql 中文版补丁_Microsoft SQL Server 2008 R2 SP1补丁 64位 官方免费版(附安装教程)...
  19. Linux 进程管理学习笔记(一)
  20. 8月2日 jquery

热门文章

  1. 香港虚拟主机租用价格
  2. eot文件html,html – 为什么IE8没有加载我的eot文件?
  3. macbook m1 vmware fusion 安装centos8
  4. MySQL服务器配置优化(读书笔记)
  5. CSS backdrop-filter 滤镜 毛玻璃效果
  6. 在使用百度地图API时,浏览器报错
  7. bzoj1208 [HNOI2004]宠物收养所
  8. QDockWidget增加边框
  9. 【12月英语博客】念念不忘,必有回响
  10. Jdbc结果集Map映射