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

自动化更新包文件--shell脚本

自动化更新包文件--shell脚本

    • 背景
    • 手动更包
    • 自动化更包

背景

作为一名实施工程师,当然也协助做些测试的工作,当产品功能开发后,研发会将本次迭代涉及的前后端包文件提供过来。有时会因为一些原因研发没法现场开发,那就需要我们配合测试并将情况反馈给研发,会频繁的更新包文件。手动更包除了麻烦效率也低,所以建议自动化脚本更包,其实也就是把手动命令写到一个shell脚本中直接执行。
有些客户环境有自动化运维应用,直接把脚本内容复制粘贴运行即可,同理。

手动更包

前端包operation
涉及到前端定制化页面展示,除了必要js文件保留不变,其他均采用本次operation包。
后端包diagram.jar
更新整个diagram.jar包,或者在原jar包基础上更新部分class文件。
连接服务器
从某服务器获取更新包,或把文件包传到某服务器以便更包。

手动更包代码片.

// 备份原包放到bak下
mkdir -p /2024/20240328/bak
mv /test/webapp/operation /2024/20240328/bak
// 部署新包放到指定文件夹下
cd /2024/20240328
sftp -o port=1234 engineer@1.2.3.4
// 此处需要输入密码Engineer@123
cd /test/engineer
get operation.zip
exit
// 然后对新包处理
unzip operation.zip 
mv operation /test/webapp/operation
// 替换部分文件
cp /2024/20240328/bak/operation/static/domain.js   /test/webapp/operation/static/

自动化更包

touch update.sh
vi update.sh

更包代码片.

#!/usr/bin/sh
// 备份原包放到bak下
mkdir -p /2024/20240328/bak
mv /test/webapp/operation /2024/20240328/bak
// 部署新包放到指定文件夹下
cd /2024/20240328
curl -u engineer:Engineer'@'123 -O "sftp://1.2.3.4:1234/test/engineer/operation.zip"
unzip operation.zip 
mv operation /test/webapp/operation
// 替换部分文件
cp /2024/20240328/bak/operation/static/domain.js   /test/webapp/operation/static/
update_time=$(date "+%Y-%m-%d %H:%M:%S")#
current_date=$(date "+%Y-%m-%d")#
current_time=$(date "+%H:%M:%S")#
echo "更新时间:$update_time"#
echo "当前日期:$current_date"#
echo "当前时间:$current_time"#

====
sh update.sh
完成

相关文章:

自动化更新包文件--shell脚本

自动化更新包文件--shell脚本 背景手动更包自动化更包 背景 作为一名实施工程师,当然也协助做些测试的工作,当产品功能开发后,研发会将本次迭代涉及的前后端包文件提供过来。有时会因为一些原因研发没法现场开发,那就需要我们配合…...

Vue element-plus 导航栏 [el-menu]

导航栏 [el-menu] Menu 菜单 | Element Plus el-menu有很多属性和子标签,为网站提供导航功能的菜单。 常用标签: 它里面有两个子标签。el-menu-item,它其实就是el-menu每一个里面的item,item就是真实匹配到路由的每个栏目&#…...

数据结构——数组

数组定义: 在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识。 因为数组内的元素是连续存储的,所以数组中元素的地址,可以通过其索引计算出来。 性…...

python asyncio websockets server

python websocket server在收到接受消息处理完后会默认关闭连接。需要在msg_handler里面加个while true就能一直保持连接了。 start_server websockets.serve(msg_handler, "0.0.0.0", 29967) asyncio.get_event_loop().run_until_complete(start_server) asyncio.…...

视频素材免费网站有哪些?8个视频素材库网站下载推荐

在视频创作领域,选择正确的高质量无水印素材网站能够极大地丰富您的作品,让每一帧都鲜活起来。下面,我们继续为您介绍更多优质的视频素材网站,每一个都是您创作旅程中的宝贵资源。 1. 蛙学府(中国) 集合了…...

ChatGPT与传统搜索引擎的区别:智能对话与关键词匹配的差异

引言 随着互联网的快速发展,信息的获取变得比以往任何时候都更加便捷。在数字化时代,人们对于获取准确、及时信息的需求愈发迫切。传统搜索引擎通过关键词匹配的方式为用户提供了大量的信息,然而,这种机械式的检索方式有时候并不…...

xargs后调用bash自定义函数(写该函数文本到脚本, 并引导PATH)

xargs后调用bash自定义函数 需要3步骤,如下 function to_markdown_href_func() { fp$1 #echo $fpecho -e "\n[${fp}](${PREFIX}/${fp})" }BIN/tmp/bin/ F$BIN/to_markdown_href_func.sh mkdir -p $BIN 获得函数to_markdown_href_func的文本 ,写文本到 /tmp/bin/to_ma…...

学术论文写作新利器:ChatGPT技巧详解

ChatGPT无限次数:点击直达 学术论文写作新利器:ChatGPT技巧详解 在如今信息爆炸的时代,学术论文写作变得愈发重要且具有挑战性。随着人工智能技术的不断发展,ChatGPT作为一种强大的写作辅助工具,为学术论文创作者提供了全新的可能…...

Spring整合JDBC

1、引入依赖 <properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><depen…...

详解Qt中的布局管理器

Qt中的布局管理是用于组织用户界面中控件&#xff08;如按钮、文本框、标签等&#xff09;位置和尺寸调整的一种机制。说白了就是创建了一种规则&#xff0c;随着窗口变化其中的控件大小位置跟着变化。Qt提供了多种布局管理器&#xff0c;每种都有其特定用途和特点。以下是对Qt…...

MyBatis 参数重复打印的bug

现象 最近有个需求&#xff0c;需要在mybatis对数据库进行写入操作的时候&#xff0c;根据条件对对象中的某个值进行置空&#xff0c;然后再进行写入&#xff0c;这样数据库中的值就会为空了。 根据网上查看的资料&#xff0c;选择在 StatementHandler 类执行 update 的时候进…...

ES6学习之路:迭代器Iterator和生成器Generator

迭代器 一、知识背景 什么是迭代器 迭代器就是在一个数据集合中不断取出数据的过程迭代和遍历的区别 遍历是把所有数据都取出迭代器注重的是依次取出数据&#xff0c;它不会在意有多少数据&#xff0c;也不会保证能够取出多少或者能够把数据都取完。比如斐波那契额数列&#…...

如何使用 DynamiCrafter Interp Loop 无缝连接两张照片

DynamiCrafter Interp Loop 是一个基于 AI 的工具&#xff0c;可以用来无缝连接两张照片。它使用深度学习技术来生成中间帧&#xff0c;从而使两张照片之间的过渡更加自然流畅。 使用步骤 访问 DynamiCrafter Interp Loop 网站&#xff1a;https://huggingface.co/spaces/Dou…...

今天起,Windows可以一键召唤GPT-4了

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 发布在https://it.weoknow.com 更多资源欢迎关注 微软 AI 大计的最后一块拼图完成了&#xff1f; 把 Copilot 按钮放在 Window…...

使用Kaggle API快速下载Kaggle数据集

前言 在使用Kaggle网站下载数据集时&#xff0c;直接在网页上点击下载可能会很慢&#xff0c;甚至会出现下载失败的情况。本文将介绍如何使用Kaggle API快速下载数据集。 具体步骤 安装Kaggle API包 在终端中输入以下命令来安装Kaggle API相关的包&#xff1a; pip install…...

java 通过 microsoft graph 调用outlook(二)

这次提供一些基础调用方式API PS&#xff1a; getMailFolders 接口返回的属性中&#xff0c;包含了未读邮件数量unreadItemCount 一 POM文件 <!-- office 365 --><dependency><groupId>com.google.guava</groupId><artifactId>guava<…...

【机器学习】代价函数

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…...

[leetcode] 100. 相同的树

给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1&#xff1a; 输入&#xff1a;p [1,2,3], q [1,2,3] 输出&#xff1a;true示例 2&a…...

08、Lua 函数

Lua 函数 Lua 函数Lua函数主要有两种用途函数定义解析&#xff1a;optional_function_scopefunction_nameargument1, argument2, argument3..., argumentnfunction_bodyresult_params_comma_separated 范例 : 定义一个函数 max()Lua 中函数可以作为参数传递给函数多返回值Lua函…...

【数据分析面试】1. 计算年度收入百分比(SQL)

题目 你需要为公司的营收来源生成一份年度报告。计算截止目前为止&#xff0c;在表格中记录的第一年和最后一年所创造的总收入百分比。将百分比四舍五入到两位小数。 示例&#xff1a; 输入&#xff1a; annual_payments 表 列名类型amountINTEGERcreated_atDATETIMEstatusV…...

Python多进程+ZeroMQ+内存映射=真无锁?资深架构师用17个生产事故告诉你为什么92%的“去GIL”方案在高并发下静默失败

第一章&#xff1a;Python无锁GIL环境下的并发模型避坑指南Python 的全局解释器锁&#xff08;GIL&#xff09;长期被误认为是“无锁”环境&#xff0c;实则恰恰相反——GIL 是 CPython 解释器中一把严格的互斥锁&#xff0c;它确保任意时刻仅有一个线程执行 Python 字节码。所…...

三步解锁QQ空间历史说说备份:数据留存与管理实用指南

三步解锁QQ空间历史说说备份&#xff1a;数据留存与管理实用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory QQ空间数据备份是许多用户保存青春记忆和重要记录的需求。GetQzonehist…...

【架构实战】分布式事务解决方案

一、分布式事务的挑战 在微服务架构下&#xff0c;一个业务操作可能涉及多个服务的数据修改。传统的本地事务无法保证跨服务的数据一致性。 经典场景&#xff1a; 用户下单 → 订单服务扣库存 → 支付服务扣余额 → 物流服务创建运单任何一步失败&#xff0c;都需要回滚之前的操…...

Systemd配置文件修改后不生效?试试这个命令比重启更高效

Systemd配置热更新实战&#xff1a;如何用daemon-reexec替代服务重启 在Linux系统管理中&#xff0c;systemd作为现代init系统的代表&#xff0c;其配置调整是管理员日常工作的核心部分。但许多工程师在修改/etc/systemd/system.conf这类全局配置后&#xff0c;往往陷入两难&am…...

百川2-13B-4bits模型精调:解决OpenClaw复杂任务分解难题

百川2-13B-4bits模型精调&#xff1a;解决OpenClaw复杂任务分解难题 1. 问题背景&#xff1a;OpenClaw的复杂任务执行困境 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动化处理一份市场调研报告时&#xff0c;遭遇了令人抓狂的体验。这个看似简单的任务需要完成网页数据…...

XL6008直流升压电路设计与应用指南

基于XL6008的直流升压电路设计指南 1. 项目概述 1.1 应用背景 便携式电子设备对电源系统提出了特殊要求&#xff1a;在保持轻量化的同时&#xff0c;需要提供稳定的工作电压。由于单节锂电池的标称电压为3.7V&#xff08;满电4.2V&#xff09;&#xff0c;而许多电子元件需要…...

Python农业物联网部署突然中断?揭秘土壤传感器数据丢包率超37%的底层时钟漂移根源(附校准代码)

第一章&#xff1a;Python农业物联网部署在现代农业数字化转型中&#xff0c;Python凭借其丰富的物联网生态库&#xff08;如paho-mqtt、Adafruit-IO、RPi.GPIO&#xff09;和轻量级运行特性&#xff0c;成为边缘设备与云平台协同的核心语言。本章聚焦于基于树莓派的土壤温湿度…...

基于Matlab的正态云模型花卉特征提取:从理论到代码实现

257.基于matlab的正态云模型花卉特征提取&#xff0c;用正向正态云发生器和逆向正态云发生器来模拟花卉的部分特征提取 程序已调通&#xff0c;可直接运行在花卉研究领域&#xff0c;准确提取花卉特征对于花卉分类、品种识别等工作至关重要。今天咱们来聊聊基于Matlab的正态云模…...

计算机毕业设计springboot资源分享网站 基于SpringBoot的在线知识共享与资源协作平台 SpringBoot框架下的数字化学习资料交流与社区系统

计算机毕业设计springboot资源分享网站&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网技术的飞速发展和知识经济的蓬勃兴起&#xff0c;人们对信息获取与知识共享的需…...

Framer.js测试策略终极指南:构建可靠UI原型的完整测试方案

Framer.js测试策略终极指南&#xff1a;构建可靠UI原型的完整测试方案 【免费下载链接】Framer Framer - Design Everything 项目地址: https://gitcode.com/gh_mirrors/fr/Framer Framer是一款强大的UI设计和原型工具&#xff0c;能够帮助设计师和开发者快速创建交互丰…...