expect脚本在自动化部署中的具体应用案例
#expect脚本在自动化部署中的具体应用
expect脚本是一个非常好的交互式应用脚本,在自动化部署中,可以使用这个脚本来实现全自动的自动化部署。下面是一些具体的应用案例。
场景一:自动安装mysql
可以使用expect脚本来实现mysql自动安装,提取初始化密码,并使用初始化密码登录系统,然后修改密码,再执行数据库初始化操作。
send "unzip mysql.zip\n"
expect "# "
send "rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm\n"
sleep 10
expect "]# "
send "rpm -ivh numactl-2.0.7-8.el6.x86_64.rpm\n"
sleep 10
expect "]# "
send "tar -zxvf mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz -C /usr/local\n"
sleep 60
expect "]# "
send "mv /usr/local/mysql-5.7.42-linux-glibc2.12-x86_64 /usr/local/mysql\n"
sleep 3
expect "# "
send "groupadd mysql\n"
expect "# "
send "useradd -g mysql -s /bin/false mysql\n"
expect "# "
send "mkdir -p /data/mysql\n"
expect "# "
send "chown -fR mysql:mysql /data/mysql\n"
expect "# "
send "cd /usr/local/mysql/bin/\n"
expect "# "
send "./mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql\n"
expect "# "
send "ln -s /usr/local/mysql/bin/mysql /usr/sbin/mysql\n"
expect "# "
send "/bin/cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql\n"
expect "# "
send "chmod +x /etc/init.d/mysql\n"
expect "# "
send "cd /etc/rc.d/init.d\n"
expect "# "
send "chkconfig --add mysql\n"
expect "# "
send "chkconfig mysql on\n"
expect "# "
send "/etc/init.d/mysql start\n"
expect "# "
send "cd /data/mysql\n"
expect "# "
send "cat error.log | grep password| awk \"{ print \\\$NF}\"\n"
expect {-re {password is generated for root@localhost: (.+)} {set myPassword \$expect_out(1,string)}timeout {puts "未找到匹配的密码字符串"}
}
expect "# "
puts "MySQL初始密码为:\$myPassword"
send "mysql -uroot -p\n"
expect "password: "
send "\$myPassword\n"
expect "mysql> "
send "set password =password('wahaha@m#T98kjhss');\n"
expect "mysql> "
send "grant all privileges on *.* to 'root'@'%' identified by 'wahaha@m#T98kjhss';\n"
expect "mysql> "
send "flush privileges;\n"
expect "mysql> "
send "create database wahaha;\n"
expect "mysql> "
send "use wahaha;\n"
expect "mysql> "
send "set names utf8;\n"
expect "mysql> "
send "source /opt/mysql/wahaha_mysql.sql;\n"
expect "mysql> "
send "exit\n"
expect "# "
场景2 安装JDK
解压安装JDK,并将JAVA_HOME相关变量写入/etc/profile中。
send "cd /usr/java; tar -zxvf jdk1.8.0_191.tar.gz\n"
expect "# "
send "echo 'JAVA_HOME=\/usr\/java\/jdk1.8.0_191' >> /etc/profile\n"
expect "# "
send "echo 'JRE_HOME=\\\${JAVA_HOME}\/jre' >> /etc/profile\n"
expect "# "
send "echo 'CLASSPATH=.:\\\${JAVA_HOME}\/lib:\\\${JRE_HOME}\/lib' >> /etc/profile\n"
expect "# "
send "echo 'PATH=\\\${JAVA_HOME}\/bin:\\\$PATH' >> /etc/profile\n"
expect "# "
send "echo 'export JAVA_HOME JRE_HOME CLASSPATH PATH' >> /etc/profile\n"
expect "# "
send "source /etc/profile\n"
expect "# "
send "java -version\n"
expect "# "
结论
使用同样的方法,我们可以实现任意安装过程,包括tomcat、redis,kafaka, 甚至Kubernetes。通过expect脚本,一切命令化,皆可自动化。expect与jenkins结合,我们可以实现绝大部分系统的自动化安装部署,这将给系统运维带来极大的便利。
相关文章:
expect脚本在自动化部署中的具体应用案例
#expect脚本在自动化部署中的具体应用 expect脚本是一个非常好的交互式应用脚本,在自动化部署中,可以使用这个脚本来实现全自动的自动化部署。下面是一些具体的应用案例。 场景一:自动安装mysql 可以使用expect脚本来实现mysql自动安装&…...
【Java+SQL Server】前后端连接小白教程
目录 📋 流程总览 ⛳️【SQL Server】数据库操作 1. 新建数据库text 2. 新建表 3. 编辑表 ⛳️【IntelliJ IDEA】操作 1. 导入jar包 2. 运行显示错误 📋 流程总览 ⛳️【SQL Server】数据库操作 打开SQL Server数据库-->sa登录-->新建数据库…...
Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持
目录 1、前言免责声明 2、相关方案推荐FPGA图像处理方案FPGA图像缩放方案FPGA视频拼接叠加融合方案推荐 3、设计思路详解HLS 图像缩放介绍Video Mixer介绍 4、vivado工程介绍PL 端 FPGA 逻辑设计PS 端 SDK 软件设计 5、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他…...
Web语言基础课程期末代做
《Web语言基础》课程期末考核要求综合运用课程所学知识,使用VS和SQL及相关开发工具,结合DIVCSS等前端设计技术,完成一个具备新闻发布和考试功能的动态系统,要求包括但不限于:用户注册、登录功能、新闻展示功能、后台数…...
Scanner常用知识点
在Java中,Scanner类是用于读取用户输入的工具类,可以从多种输入源读取数据,如标准输入流、文件或字符串。以下是一些Scanner类的常用知识点: Scanner的初始化:在使用Scanner类之前,需要先将其导入到你的Ja…...
uniapp页面使用多个echarts出现数据渲染错乱问题解决
首先,uniapp当中使用echarts是在通过使用renderjs的script模板的前提下实现的,在官方提供的案例当中,核心代码是这一部分: 但如果将其封装为组件,并在一个页面当中引用多次来生成多个charts图标,那么这个时…...
PHP连接数据库 错误抑制 三元运算符 学习资料
PHP连接数据库 PHP可以通过不同的扩展和库来连接各种类型的数据库。下面是一个使用MySQL数据库的连接示例: <?php $servername "localhost"; $username "your_username"; $password "your_password"; $dbname "your_d…...
5G智慧工地整体解决方案:文件全文115页,附下载
关键词:5G智慧工地,智慧工地建设方案,智慧工地管理平台系统,智慧工地建设调研报告,智慧工地云平台建设 一、5G智慧工地建设背景 5G智慧工地是利用5G技术、物联网、大数据、云计算、AI等信息技术,围绕“人…...
数据结构 / 内存的动态申请和释放
1.内存的动态申请 malloc malloc 的头文件: #include <stdlib.h>格式: void *malloc(size_t size);参数: size_t size: 申请堆区内存大小, 单位是字节;size_t: 是数据类型, 是 unsigned long的宏定义的别名;返回值: void *: 通用类型指针,使用时需要强转为具…...
Android手电筒、闪光灯、torch、flash
1. 仅开启手电筒 单纯的开启手电筒我们可以使用CameraManager的.setTorchMode()方法。 cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)获取该相机特征是否可获取闪光灯。 CameraManager cameraManager (CameraManager) getSystemService(CAMERA_SE…...
C语言--每日选择题--Day26
第一题 1.在C语言中,表示一次性地给数组a的10元素赋值() int a[10];scanf("%d",a); A:正确 B:错误 答案及解析 B 我们知道单独的数组名就是首元素地址,但是也有…...
[ACTF2020 新生赛]BackupFile
打开题目就一句话:尝试找到源文件 和上一题一样,用dirsearch扫描网站找到了一下内容 flag.php,0B,虚假flag 瞅一眼index.php.bak是啥 下载了一个文件,把bak后缀删掉,打开了index.php源码 is_numeric()&am…...
WPF面试题:WPF绘图技术介绍
作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/ 文章目录 WPF绘图基本用法绘制直线在XAML中绘制直线在C#代码中绘制直线使用Path绘制直线注意矩形绘制在XAML中绘制矩形在C#代码中绘制矩形设置矩形的位置使用圆角矩形画刷1. SolidColor…...
三、Lua变量
文章目录 一、变量分类二、变量赋值三、索引 一、变量分类 lua变量分为全局变量,局部变量。 全局变量:默认,全局有效。 局部变量:从作用范围开始到作用范围结束,需加local 修饰。 a1function ff()local b1 endprint(a…...
C#每天复习一个重要小知识day4:枚举的概念/申明/使用
目录 1.枚举的概念: 2.申明枚举和申明枚举变量: 申明枚举语法: 申明枚举变量语法: 1.枚举的概念: 枚举是什么?枚举是一个比较特别的存在,它是一个命名的整形常量的集合,一般用它…...
C++:对象模型和this指针
对象模型: 成员变量和成员函数分开存储 在C中,类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 空对象占用空间: 1字节 C编译器会给每个空对象也分配一个字节空间,是为了区分空对象占内存的位置 每个…...
碳酸氢锂/硫酸锂溶液纯化除钙镁解决方案
碳酸锂是锂电行业阳极生产中的一个重要原材料,主要用于制造钴酸锂、镍酸锂、锰酸锂等电极材料,也用于充电 锂电池中作非水溶液电解质等,具有良好的电化学性能,应用领域还在不断扩大。工业级碳酸锂主含量(Li2CO3&#x…...
消失的数字,旋转数组(leetcode 一题多解)
目录 一、消失的数字 思路一(暴力求解)代码实现: 思路二(数列的思想)代码实现: 思路三(异或的运用)代码实现: 二、轮转数组 思路一(暴力求解)…...
肠道菌群16s检测粪便采样工具包 粪便采样套装
肠道菌群16s检测是一种常见的分子生物学技术,用于研究人体肠道中的微生物群落。该技术通过分析16s rRNA基因序列,可以快速、准确地鉴定并定量不同种类的肠道微生物。 肠道菌群16s检测通常通过采集粪便样本进行分析。在实验室中,通过提取微生物…...
实现领域驱动设计-07-领域服务
领域中的服务表示一个无状态的操作,它用于实现特定于某个领域的任务。当某个操作不适合放在聚合和值对象上时,为了避免过程式的编程方式,最好的方式便是使用领域服务来实现该操作。 什么是领域服务? 当领域中的某个操作过程或转换过程不是实…...
PowerPaint-V1商业修图实战:批量处理产品图,提升工作效率
PowerPaint-V1商业修图实战:批量处理产品图,提升工作效率 1. 为什么选择PowerPaint-V1进行商业修图 在电商运营和产品展示领域,高质量的图片是吸引用户注意力的关键。传统修图流程通常需要设计师手动操作Photoshop等专业软件,耗…...
手把手调试RH850G3KH中断控制器:INTC1/INTC2寄存器配置避坑手册
手把手调试RH850G3KH中断控制器:INTC1/INTC2寄存器配置避坑手册 在汽车电子控制单元(ECU)开发中,中断处理的实时性和可靠性直接关系到系统稳定性。RH850G3KH作为Renesas旗舰级车规MCU,其双中断控制器架构(I…...
Gitee本土化战略深度解析:中国开发者生态的“新基建“ Gitee本土化战略深度解析:中国开发者生态的“新基建“
在数字化转型浪潮席卷全球的当下,代码托管平台作为软件开发的基础设施,其战略价值日益凸显。Gitee作为中国本土领先的代码托管平台,凭借其独特的本土化优势,正在重塑国内开发者的协作生态。与GitHub等国际平台相比,Git…...
为什么说 Vue 3 的组合式 API 比 React Hooks 更容易上手?深度解析
为什么说 Vue 3 的组合式 API 比 React Hooks 更容易上手?深度解析 在前端框架的演进中,Vue 3 的组合式 API(Composition API)与 React Hooks 均是革命性创新,但前者因设计哲学与工程实践的优化,在易用性上…...
终极跨平台串口调试工具:5个秘诀让硬件调试效率翻倍
终极跨平台串口调试工具:5个秘诀让硬件调试效率翻倍 【免费下载链接】SerialPortAssistant This project is a cross-platform serial port assistant. It can run on WINDOWS, linux、android、macos system. 项目地址: https://gitcode.com/gh_mirrors/se/Seri…...
macOS光标个性化终极指南:如何用Mousecape打造专属高效工作流
macOS光标个性化终极指南:如何用Mousecape打造专属高效工作流 【免费下载链接】Mousecape Cursor Manager for OSX 项目地址: https://gitcode.com/gh_mirrors/mo/Mousecape 在macOS的视觉交互体验中,鼠标指针作为我们与数字世界最直接的连接点&a…...
终极指南:3步掌握Sabaki围棋软件的完整使用技巧
终极指南:3步掌握Sabaki围棋软件的完整使用技巧 【免费下载链接】Sabaki An elegant Go board and SGF editor for a more civilized age. 项目地址: https://gitcode.com/gh_mirrors/sa/Sabaki Sabaki是一款优雅的围棋棋盘软件和SGF编辑器,专为追…...
告别手动排版!用NoteExpress一键搞定Elsevier期刊投稿的参考文献格式
科研效率革命:NoteExpress全自动参考文献排版实战指南 当你熬过无数个深夜终于完成论文初稿,却在参考文献排版环节卡壳时,那种挫败感我太熟悉了。去年投稿Elsevier期刊的经历让我深刻体会到,手动调整参考文献格式不仅耗时费力&…...
手把手教你:在Ubuntu 22.04上从源码编译安装GMP库(解决NTL依赖)
在Ubuntu 22.04上从源码构建GMP库:解决数学计算依赖的完整指南 当你在Linux环境下开发需要高性能数学运算的应用时,GMP(GNU Multiple Precision Arithmetic Library)往往是绕不开的基础设施。这个开源库为任意精度数学运算提供了…...
终极指南:5分钟学会用Virtual Kubelet在非K8s环境部署容器
终极指南:5分钟学会用Virtual Kubelet在非K8s环境部署容器 【免费下载链接】virtual-kubelet Virtual Kubelet is an open source Kubernetes kubelet implementation. 项目地址: https://gitcode.com/gh_mirrors/vi/virtual-kubelet Virtual Kubelet是一个开…...
