当前位置: 首页 > news >正文

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数据库的连接示例&#xff1a; <?php $servername "localhost"; $username "your_username"; $password "your_password"; $dbname "your_d…...

5G智慧工地整体解决方案:文件全文115页,附下载

关键词&#xff1a;5G智慧工地&#xff0c;智慧工地建设方案&#xff0c;智慧工地管理平台系统&#xff0c;智慧工地建设调研报告&#xff0c;智慧工地云平台建设 一、5G智慧工地建设背景 5G智慧工地是利用5G技术、物联网、大数据、云计算、AI等信息技术&#xff0c;围绕“人…...

数据结构 / 内存的动态申请和释放

1.内存的动态申请 malloc malloc 的头文件: #include <stdlib.h>格式: void *malloc(size_t size);参数: size_t size: 申请堆区内存大小, 单位是字节&#xff1b;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语言中&#xff0c;表示一次性地给数组a的10元素赋值&#xff08;&#xff09; int a[10];scanf&#xff08;"%d"&#xff0c;a&#xff09;; A&#xff1a;正确 B&#xff1a;错误 答案及解析 B 我们知道单独的数组名就是首元素地址&#xff0c;但是也有…...

[ACTF2020 新生赛]BackupFile

打开题目就一句话&#xff1a;尝试找到源文件 和上一题一样&#xff0c;用dirsearch扫描网站找到了一下内容 flag.php&#xff0c;0B&#xff0c;虚假flag 瞅一眼index.php.bak是啥 下载了一个文件&#xff0c;把bak后缀删掉&#xff0c;打开了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变量分为全局变量&#xff0c;局部变量。 全局变量&#xff1a;默认&#xff0c;全局有效。 局部变量&#xff1a;从作用范围开始到作用范围结束&#xff0c;需加local 修饰。 a1function ff()local b1 endprint(a…...

C#每天复习一个重要小知识day4:枚举的概念/申明/使用

目录 1.枚举的概念&#xff1a; 2.申明枚举和申明枚举变量&#xff1a; 申明枚举语法&#xff1a; 申明枚举变量语法&#xff1a; 1.枚举的概念&#xff1a; 枚举是什么&#xff1f;枚举是一个比较特别的存在&#xff0c;它是一个命名的整形常量的集合&#xff0c;一般用它…...

C++:对象模型和this指针

对象模型&#xff1a; 成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 空对象占用空间&#xff1a; 1字节 C编译器会给每个空对象也分配一个字节空间&#xff0c;是为了区分空对象占内存的位置 每个…...

碳酸氢锂/硫酸锂溶液纯化除钙镁解决方案

碳酸锂是锂电行业阳极生产中的一个重要原材料&#xff0c;主要用于制造钴酸锂、镍酸锂、锰酸锂等电极材料&#xff0c;也用于充电 锂电池中作非水溶液电解质等&#xff0c;具有良好的电化学性能&#xff0c;应用领域还在不断扩大。工业级碳酸锂主含量&#xff08;Li2CO3&#x…...

消失的数字,旋转数组(leetcode 一题多解)

目录 一、消失的数字 思路一&#xff08;暴力求解&#xff09;代码实现&#xff1a; 思路二&#xff08;数列的思想&#xff09;代码实现&#xff1a; 思路三&#xff08;异或的运用&#xff09;代码实现&#xff1a; 二、轮转数组 思路一&#xff08;暴力求解&#xff09…...

肠道菌群16s检测粪便采样工具包 粪便采样套装

肠道菌群16s检测是一种常见的分子生物学技术&#xff0c;用于研究人体肠道中的微生物群落。该技术通过分析16s rRNA基因序列&#xff0c;可以快速、准确地鉴定并定量不同种类的肠道微生物。 肠道菌群16s检测通常通过采集粪便样本进行分析。在实验室中&#xff0c;通过提取微生物…...

实现领域驱动设计-07-领域服务

领域中的服务表示一个无状态的操作&#xff0c;它用于实现特定于某个领域的任务。当某个操作不适合放在聚合和值对象上时&#xff0c;为了避免过程式的编程方式&#xff0c;最好的方式便是使用领域服务来实现该操作。 什么是领域服务? 当领域中的某个操作过程或转换过程不是实…...

PowerPaint-V1商业修图实战:批量处理产品图,提升工作效率

PowerPaint-V1商业修图实战&#xff1a;批量处理产品图&#xff0c;提升工作效率 1. 为什么选择PowerPaint-V1进行商业修图 在电商运营和产品展示领域&#xff0c;高质量的图片是吸引用户注意力的关键。传统修图流程通常需要设计师手动操作Photoshop等专业软件&#xff0c;耗…...

手把手调试RH850G3KH中断控制器:INTC1/INTC2寄存器配置避坑手册

手把手调试RH850G3KH中断控制器&#xff1a;INTC1/INTC2寄存器配置避坑手册 在汽车电子控制单元&#xff08;ECU&#xff09;开发中&#xff0c;中断处理的实时性和可靠性直接关系到系统稳定性。RH850G3KH作为Renesas旗舰级车规MCU&#xff0c;其双中断控制器架构&#xff08;I…...

Gitee本土化战略深度解析:中国开发者生态的“新基建“ Gitee本土化战略深度解析:中国开发者生态的“新基建“

在数字化转型浪潮席卷全球的当下&#xff0c;代码托管平台作为软件开发的基础设施&#xff0c;其战略价值日益凸显。Gitee作为中国本土领先的代码托管平台&#xff0c;凭借其独特的本土化优势&#xff0c;正在重塑国内开发者的协作生态。与GitHub等国际平台相比&#xff0c;Git…...

为什么说 Vue 3 的组合式 API 比 React Hooks 更容易上手?深度解析

为什么说 Vue 3 的组合式 API 比 React Hooks 更容易上手&#xff1f;深度解析 在前端框架的演进中&#xff0c;Vue 3 的组合式 API&#xff08;Composition API&#xff09;与 React Hooks 均是革命性创新&#xff0c;但前者因设计哲学与工程实践的优化&#xff0c;在易用性上…...

终极跨平台串口调试工具:5个秘诀让硬件调试效率翻倍

终极跨平台串口调试工具&#xff1a;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光标个性化终极指南&#xff1a;如何用Mousecape打造专属高效工作流 【免费下载链接】Mousecape Cursor Manager for OSX 项目地址: https://gitcode.com/gh_mirrors/mo/Mousecape 在macOS的视觉交互体验中&#xff0c;鼠标指针作为我们与数字世界最直接的连接点&a…...

终极指南:3步掌握Sabaki围棋软件的完整使用技巧

终极指南&#xff1a;3步掌握Sabaki围棋软件的完整使用技巧 【免费下载链接】Sabaki An elegant Go board and SGF editor for a more civilized age. 项目地址: https://gitcode.com/gh_mirrors/sa/Sabaki Sabaki是一款优雅的围棋棋盘软件和SGF编辑器&#xff0c;专为追…...

告别手动排版!用NoteExpress一键搞定Elsevier期刊投稿的参考文献格式

科研效率革命&#xff1a;NoteExpress全自动参考文献排版实战指南 当你熬过无数个深夜终于完成论文初稿&#xff0c;却在参考文献排版环节卡壳时&#xff0c;那种挫败感我太熟悉了。去年投稿Elsevier期刊的经历让我深刻体会到&#xff0c;手动调整参考文献格式不仅耗时费力&…...

手把手教你:在Ubuntu 22.04上从源码编译安装GMP库(解决NTL依赖)

在Ubuntu 22.04上从源码构建GMP库&#xff1a;解决数学计算依赖的完整指南 当你在Linux环境下开发需要高性能数学运算的应用时&#xff0c;GMP&#xff08;GNU Multiple Precision Arithmetic Library&#xff09;往往是绕不开的基础设施。这个开源库为任意精度数学运算提供了…...

终极指南:5分钟学会用Virtual Kubelet在非K8s环境部署容器

终极指南&#xff1a;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是一个开…...