11、ssh自动化脚本编写
11.1、如何一键自动化安装50台规模集群网站搭建:
1、自动化思路:
kickstart无人值守安装linux系统(自动创建用户、密码、优化);
分发机上创建秘钥对、批量发走公钥(expect);
写部署及优化脚本、批量发到各个服务器上,远程执行安装;
2、高级架构师:
cobbler无人值守安装linux系统(自动创建用户、密码、优化,saltstack客户端)
服务端satl上创建认证,写配置来批量安装管理各个节点服务器应用
kvm虚拟化、根据不同的业务提前做好镜像,linux基础优化,saltstack客户端
通过云计算工具openstack管理镜像,批量生成虚拟机
3、自动化运维:
需求分析 cdn;
机房设备上下架;
虚拟机:弹性、扩展性、充分利用资源;
系统初始化;
应用环境初始化;
应用的部署 调试 配置;
代码发布;
服务监控 应用 (系统cpu、硬盘、内存);
数据备份;
4、自动化发展的阶段:
环境的统一;
标准化:比如软件/usr/local/xxx/opt;
文档化;
工具化;
web化;
平台化;
11.2、ssh key + expect:
1、前期准备:
各个服务器的ssh配置文件已经优化,禁用root用户ssh登录,更改服务器监听的端口号和监听的端口;
[root@m01 ~]# useradd lc(所有的服务器都要建立相同的用户,lc)
[root@m01 ~]# echo '123456' | passwd --stdin lc(所有的服务器lc用户都要建立相同的密码)
[root@m01 ~]# echo ‘lc ALL=(ALL) NOPASSWD:ALL(所有的服务器都lc用户都要sudo权限)
[lc@m01 .ssh]$ ssh-keygen -t dsa -P ' ' -f ~/.ssh/id_dsa >/dev/null 2>&1
[root@m01 ~]# yum install expect -y
[lc@m01 ~]$ mkdir -p /server/scripts
2、创建秘钥对、批量发送公钥(expect),批量发到各个服务器上,远程执行安装服务(一次):
(1)[root@m01 ~]$ vim /server/scripts/fenfa_sshkey.exp
#!/usr/bin/expect
if { $argc != 2 } {
send_user "usage: expect fenfa_sshkey.exp file host dir\n"
exit 1
}
set file [ lindex $argv 0 ]
set host [ lindex $argv 1 ]
#set dir [ lindex $argv 2 ]
set password "123456"
spawn ssh-copy-id -i $file "-p 52113 lc@$host"
expect {
"yes/no" {send "yes\n";exp_continue}
"*password" {send "$password\n"}
}
expect eof
exit -onexit {
send_user "success!\n"
}
#expect fenfa_sshkey.exp ~/.ssh/id_das.pub 172.168.1.31
(2)[root@m01 ~]$ vim /server/scripts/fenfa_sshkey.sh
#!/bin/sh
. /etc/init.d/functions
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#1 create dsa key
ssh-keygen -t dsa -P ' ' -f ~/.ssh/id_dsa >/dev/null 2>&1
if [ $? -eq 0 ];then
action "create dsa 172.16.1.61" /bin/true
else
action "create dsa 172.16.1.61" /bin/false
exit 1
fi
#2 sed id_dsa.pub
for n in 8 31 41;do
expect fenfa_sshkey.exp ~/.ssh/id_dsa.pub 172.16.1.$n >/dev/null 2>&1
if [ $? -eq 0 ];then
action "sed id_dsa.pub 172.16.1.$n" /bin/true
else
action "sed id_dsa.pub 172.16.1.$n" /bin/false
fi
done
#3 install service
for n in 8 31 41;do
ssh -t -p 52113 lc@172.16.1.$n sudo yum install httpd -y >/dev/null 2>&1
if [ $? -eq 0 ];then
action "install httpd 172.16.1.$n" /bin/true
else
action "install httpd 172.16.1.$n" /bin/false
fi
done
[lc@m01 ~]$ sh /server/scripts/fenfa_sshkey.sh
11、ssh自动化脚本编写的更多相关文章
- java+selenium自动化脚本编写
实训项目:创盟后台管理,页面自动化脚本编写 使用工具:java+selenium 1)java+selenium环境搭建文档 2)创盟项目后台管理系统链接 java+selenium环境搭建 一.Se ...
- 自动化脚本编写环境部署_win7(RF)
第一步 安装Python并设置环境变量 1.安装python: python下载地址https://www.python.org/,建议用2.7.x版本 2.设置环境变量: 方法如下所示 第二步 安 ...
- Selenium2学习-018-WebUI自动化实战实例-016-自动化脚本编写过程中的登录验证码问题
日常的 Web 网站开发的过程中,为提升登录安全或防止用户通过脚本进行黄牛操作(宇宙最贵铁皮天朝魔都的机动车牌照竞拍中),很多网站在登录的时候,添加了验证码验证,而且验证码的实现越来越复杂,对其进行脚 ...
- 《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
1.简介 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本.前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容, ...
- RobotFramework自动化测试之脚本编写(一)
接触了上一篇的RF环境搭建及安装,相比大家都会觉得,哇塞,为什么要做这么多,那么复杂?装那么多干什么有什么用?写脚本会不会也很复杂? 其实首次安装的话 会觉得有点蒙,也不知道安装那么多是拿来干什么的, ...
- 20181225-Linux Shell Bash环境下自动化创建ssh互信脚本
20181225-Linux Shell Bash环境下自动化创建ssh互信脚本 1. 我的Blog 博客园 https://www.cnblogs.com/piggybaba/ 个人网站 http: ...
- Python+Appium自动化测试(3)-编写自动化脚本
之前一篇博客已经讲述怎样手动使用appium-desktop启动测试机上的app,但我们实际跑自动化脚本的过程中,是需要用脚本调用appium启动app的,接下来就尝试写Python脚本启动app并登 ...
- shell脚本编写笔记
包含转载内容,转载自http://wenku.baidu.com/link?url=jtCHxEYzgGve6P64U3JRQRgU6nhpGvqFLLpWu9I2Htq6hi9TGLudRFkk7r ...
- 批量配置SSH互信脚本
在大规模自动化部署时我们常常需要配置好服务器的SSH互信,以便自动化脚本可以免密登录远程服务器,常规的手动配置SSH互信步骤如下: 使用ssh-keygen生成本地ssh key(mha01),生成的 ...
随机推荐
- libvirtd 启动成功,但却没有监听
现象: 执行 systemctl start libvirtd在其它机器上进行测试是否监听:virsh -c qemu+tcp://host/system libvirtd启动成功,没有报错,但却没有 ...
- Ansible_处理失败的任务
一.Ansible处理任务失败 1.管理play中任务错误 1️⃣:Ansible评估任务的返回代码,从而确定任务是成功还是失败 2️⃣:通常而言,当任务失败时,Ansible将立即在该主机上中止pl ...
- Node.js入门(含NVM、NPM、NVM的安装)-(转载)
Node.js的介绍 引擎 引擎的特性: JS的内核即引擎.因为引擎有以下特性: (1)转化的作用: 汽油柴油等等->动能 模板+数据--->页面 js引擎:js 代码--->机器码 ...
- win10 启用Hyper-V并安装Ubuntu20.10
本文的最终目的是要将.netcore5.0(.net5.0)部署在Ubuntu中的docker容器中. 当前环境: 主系统:win10家庭版 虚拟机:Hyper-V (win10自带虚拟机) 虚拟机系 ...
- STM32定时器配置
void TIM1_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDe ...
- mysql左连接和分组实例
例: 需求:查询A表中的所有列,并查询A表中的数据(ID)在B表中出现的次数,然后按model排序,最后所有结果在一张表中展示 A表结构: B表结构: ini_device_policy表中id与in ...
- Ubuntu中的MySQL修改root密码的多种方法
查看.修改mysql的用户名和密码第一步:这时你需要进入/etc/mysql目录下,然后sudo vim/vi debian.cnf查看里面的用户名和密码,然后使用这个文件中的用户名和密码进入mysq ...
- TVM在ARM GPU上优化移动深度学习
TVM在ARM GPU上优化移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与在台式机平台上所做的类似,在移动设备中使用GPU可以提高推理速度和能源效率.但是,大 ...
- 大型图像数据聚类匹配:ICCV2019论文解析
大型图像数据聚类匹配:ICCV2019论文解析 Jointly Aligning Millions of Images with Deep Penalised Reconstruction Conge ...
- TVM设计与构架构建
TVM设计与构架构建 本文档适用于希望了解TVM体系结构和/或在项目上进行积极开发的开发人员.该页面的组织如下: 实例编译流程Example Compilation Flow描述TVM把一个模型的高级 ...