AIGC 来帮我写个脚本

这篇具有很好参考价值的文章主要介绍了AIGC 来帮我写个脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

AIGC 能力

AIGC全称为AI-Generated Content,即采用人工智能技术来自动生产内容。

充分利用好AIGC的能力挺有用的,比如下面的一个例子:给我写一个shell脚本,基本上将shell 脚本的基础能力完成,只需要稍加加工即可一个生产可用的工具。

比如:

  • 写个sehll 脚本分析一下linux 系统的网路流量、内存占用情况、磁盘占用情况等待,基本上完成相关的功能,相对自己独立完成效率差距还是蛮大的。

  • 帮我写一篇1000字介绍Java的各种垃圾回收器的发展、原理。

  • … 稍微利用一下即可满足大多数场景的需求,不会写java 脚本也没有关系,稍微看看就会了.

体验百度-文心一言

百度app目前已经集成测试版本,可以下载体验一下.

  • 提问

给我写一个shell脚本,自动抓取去jvm堆栈,然后上传到,对象存储里面去。

  • 回答

以下是一个自动抓取 JVM 堆栈并上传到对象存储的 Shell 脚本示例。这里同样假设你使用的是 AWS S3 存储桶,你可以根据使用的对象存储服务进行相应的修改。


#!/bin/bash

# 检查参数数量

if [ "$#" -ne 1 ]; then

  echo "Usage: $0 <pid>"

  exit 1

fi

# 检查 pid 是否存在

if ! ps -p "$1" > /dev/null; then

  echo "Error: PID $1 does not exist."

  exit 1

fi

# 设置 AWS 访问密钥和密钥 ID

export AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY_ID"

export AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_ACCESS_KEY"

# 设置上传存储桶和对象键

BUCKET_NAME="YOUR_S3_BUCKET_NAME"

OBJECT_KEY="jvm_stack_$(date +%Y%m%d%H%M%S).txt"  # 使用当前时间作为对象键

# 抓取 JVM 堆栈

jstack "$1" > jstack.txt  # 将堆栈信息保存到本地文件 jstack.txt

# 使用 aws-cli 上传文件

aws s3 cp jstack.txt "s3://$BUCKET_NAME/$OBJECT_KEY"

echo "JVM stack uploaded successfully to s3://$BUCKET_NAME/$OBJECT_KEY"

将此脚本保存为 capture_and_upload_jvm_stack.sh,并使用 chmod +x capture_and_upload_jvm_stack.sh 命令使其可执行。然后,你可以使用以下命令抓取指定进程的 JVM 堆栈,并将其上传到 S3 存储桶:

bash ./capture_and_upload_jvm_stack.sh <pid>

请确保在运行脚本之前,你已经安装了 aws-cli,并已经设置了正确的 AWS 访问密钥和密钥 ID。你需要将 替换为你要抓取堆栈的进程的实际 PID。如果你使用的是其他对象存储服务,请根据相应的 API 进行修改。

实操-静态资源-上传到对象存储

能力依赖

vscode 插件 突破shell 脚本语法障碍 https://github.com/yousefvand/shellman

利用上面AIGC的能力、基本上的流程都有了,稍加补充即可。

场景分析

分析一下场景: 流水线能力会自动将前端文件上传到产物包给一个URL 地址,通过环境变量可以获取,然后下载文件到本地之后将文件解压上传到 即可, APP_CODE 应用名称、 PACKAGE_URL 打包后的资源。

比如 front-delploy.sh 是一个脚本 第一个参数当前应用名称 、环境、产物包地址,即可执行如下脚本 ./front-delploy.sh "${APP_CODE}" "test" "${PACKAGE_URL}"

为了通用化,需要定制一下对象存储的路径信息 DESC_DIR="/"${APP_CODE}"/"${APP_CODE}"-group-"${CURRENT_ENV}"/release/"

代码

资源结构

index.html

navigator.html

为导航页面,先上传static 静态部分然后再上传 导航页面到对象存储。


  # ├── nginx.conf

  # ├── nginx_start.sh

  # └── publish

  #     ├── index.html

  #     ├── navigator.html

  #     └── static

  #         └── 101

  #             ├── css

  #             │   ├── chunk-common.d5b28be3.css

  #             │   ├── chunk-vendors.eb48fde8.css

  #             │   └── navigator.875ab1a7.css

  #             └── js

  #                 ├── 0.js

  #                 ├── chunk-common.js

  #                 ├── chunk-vendors.js

  #                 ├── index.js

  #                 └── navigator.js

部署脚本

对象存储的操作主要使用工具:https://github.com/s3tools/s3cmd,目前很多的对象存储都满s3的API 格式的,都可以兼容使用。

通过环境 获取对象存储配置
通过产品+环境 获取对象存储的资源目录

脚本主要有如下步骤处理上传资源文件:

  • 首先上传static目录的静态资源 。
  • 然后备份 导航页面,方便回滚可以手动回滚一下。
  • 然后上传 导航页面

#  配置信息

CUSTOM_BUCKET_NAME=

CUSTOM_ACCESS_KEY_ID=

CUSTOM_ACCESS_KEY_SECRET=

CUSTOM_ENDPOINT=

CUSTOM_REGION=

# 地址目的地 = /应用名称/应用名称-group-环境/release/

DESC_DIR=

## 当前的环境信息

CURRENT_ENV=

CURRENT_APP_CODE=

# download package file

CURRENT_PACKAGE_URL=

# Usage: banner_simple "my title"

banner_simple() {

  local msg="* $* *"

  local edge=$(echo "$msg" | sed 's/./*/g')

  echo "$edge"

  echo "$msg"

  echo "$edge"

  echo

}

# 上传前端的静态文件到

# 先上传静态版本部分、然后上传动态部分

start_upload_publish() {

  if [ ! -f "/usr/bin/s3cmd" ]; then

    yum -y install s3cmd || echo "install s3cmd error" && exit 1

  fi

  # Generate Time Random Path

  CURRENT_TIME=$(date +%Y%m%d%H%M%S)

  PARENT_DIR="/opt/local/${CURRENT_TIME}"

  if [ ! -d "$PARENT_DIR" ]; then

    mkdir -p "${PARENT_DIR}"

  fi

  ZIP_DIR=${PARENT_DIR}"/publish.zip"

  banner_simple "download push zip file path:${ZIP_DIR} "

  UNZIP_DIR="${PARENT_DIR}/unzip/"

  if [ ! -d "$UNZIP_DIR" ]; then

    mkdir -p "${UNZIP_DIR}"

  fi

  banner_simple "start to download package:${CURRENT_PACKAGE_URL} and unzip package zip file path: ${UNZIP_DIR}"

  curl -L "${CURRENT_PACKAGE_URL}" -o "${ZIP_DIR}" || exit 1

  unzip "${ZIP_DIR}" -d "${UNZIP_DIR}" || exit 1

  banner_simple "begin upload file to : ${UNZIP_DIR}"

  ## 先上传静态文件部分

  ## front static file upload to

  FORNT_STATIC_LOCAL_DIR="${UNZIP_DIR}publish/static/"

  FORNT_STATIC__DIR="${DESC_DIR}publish/static/"

  banner_simple "start front static file  local:${FORNT_STATIC_LOCAL_DIR} upload to :${FORNT_STATIC__DIR}"

  s3cmd --access_key="${CUSTOM_ACCESS_KEY_ID}" --secret_key="${CUSTOM_ACCESS_KEY_SECRET}" --region="${CUSTOM_REGION}" --host="${CUSTOM_ENDPOINT}" --host-bucket="${CUSTOM_BUCKET_NAME}" put --recursive "${FORNT_STATIC_LOCAL_DIR}" "s3://${CUSTOM_BUCKET_NAME}${FORNT_STATIC__DIR}" || exit 1

  banner_simple "end front static file upload to  "

  rm -rf "${FORNT_STATIC_LOCAL_DIR}" || exit 1

  ## back up front dynamics file upload to

  FORNT_DYNAMICS_LOCAL_DIR="${UNZIP_DIR}publish/"

  FORNT_DYNAMICS__DIR="${DESC_DIR}publish/backup/${CURRENT_TIME}/"

  banner_simple "start back up front dynamics file local:${FORNT_DYNAMICS_LOCAL_DIR} upload to : ${FORNT_DYNAMICS__DIR}"

  # shellcheck disable=SC2086

  s3cmd --access_key="${CUSTOM_ACCESS_KEY_ID}" --secret_key="${CUSTOM_ACCESS_KEY_SECRET}" --region="${CUSTOM_REGION}" --host="${CUSTOM_ENDPOINT}" --host-bucket="${CUSTOM_BUCKET_NAME}" put --recursive "${FORNT_DYNAMICS_LOCAL_DIR}" "s3://${CUSTOM_BUCKET_NAME}${FORNT_DYNAMICS__DIR}" || exit 1

  banner_simple "end  back up front dynamics file upload to  "

  ## front dynamics file upload to

  FORNT_DYNAMICS_LOCAL_DIR="${UNZIP_DIR}publish/"

  FORNT_DYNAMICS__DIR="${DESC_DIR}publish/"

  banner_simple "start front dynamics file local:${FORNT_DYNAMICS_LOCAL_DIR} upload to : ${FORNT_DYNAMICS__DIR}"

  # shellcheck disable=SC2086

  s3cmd --access_key="${CUSTOM_ACCESS_KEY_ID}" --secret_key="${CUSTOM_ACCESS_KEY_SECRET}" --region="${CUSTOM_REGION}" --host="${CUSTOM_ENDPOINT}" --host-bucket="${CUSTOM_BUCKET_NAME}" put --recursive "${FORNT_DYNAMICS_LOCAL_DIR}" "s3://${CUSTOM_BUCKET_NAME}${FORNT_DYNAMICS__DIR}" || exit 1

  banner_simple "end front dynamics file upload to  "

  rm -rf "${FORNT_DYNAMICS_LOCAL_DIR}" || exit 1

  banner_simple "end upload file to "

}

# $1: appCode

# $2: env

# $3: package url

main() {

  banner_simple "begin script "

  CURRENT_APP_CODE="$1"

  CURRENT_ENV="$2"

  CURRENT_PACKAGE_URL="$3"

  # 地址目的地 = /应用名称/应用名称-环境/release/

  # shellcheck disable=SC2027

  DESC_DIR="/"${CURRENT_APP_CODE}"/"${CURRENT_APP_CODE}"-group-"${CURRENT_ENV}"/release/"

  # check base info

  if [[ -z "${CURRENT_APP_CODE}" ]]; then

    banner_simple "param 1: appCode is empty"

    exit 1

  fi

  if [[ -z "${CURRENT_ENV}" ]]; then

    banner_simple "param 2: env is empty,you can test pre prod"

    exit 1

  fi

  if [[ "${CURRENT_ENV}" == "test" ]]; then

    banner_simple "this is test env"

    CUSTOM_BUCKET_NAME=

    CUSTOM_ACCESS_KEY_ID=

    CUSTOM_ACCESS_KEY_SECRET=

    CUSTOM_ENDPOINT=

    CUSTOM_REGION=

  fi

 

  # check  info

  if [[ -z "${CUSTOM_BUCKET_NAME}" ]]; then

    banner_simple " info is empty"

    exit 1

  fi

  start_upload_publish || exit 1

}

main "${@}"

执行脚本

将上面脚本保存到一个一个存储地址,然后直接在流水线配置如下脚本即可。


curl -L "https://xxxx/front-delploy.sh" >front-delploy.sh; chmod a+x front-delploy.sh; ./front-delploy.sh "${APP_CODE}" "test" "${PACKAGE_URL}"

怎么调试脚本?

如何调试shell 脚本

bash -x front-delploy.sh

当然也可以去AIGC 去提问一下 ,如何调试。

调试shell脚本可以使用以下方法,以便快速诊断和纠正脚本中的错误:

添加注释:在脚本中添加注释,以便在执行脚本时显示说明和提示。这可以帮助您理解脚本的执行流程和变量的含义。
使用调试工具:使用调试工具,例如bash -x命令或在脚本中使用set -x,以显示脚本的详细执行过程。这些工具可以帮助您跟踪脚本的执行并找到错误。
使用echo语句:在脚本中使用echo语句输出变量的值或特定的执行步骤。这可以帮助您理解脚本的执行流程和变量的值。
使用trap命令:使用trap命令设置信号处理程序,以便在脚本发生特定信号时执行特定的操作,例如在脚本执行失败时输出错误信息。
检查脚本错误:在脚本中检查特定命令的返回值,例如if [ $? -ne 0 ]; then echo "Error" fi,以检查命令的执行情况并在出现错误时进行相应的处理。
使用调试模式:如果您的脚本需要与其他程序或系统进行交互,则可以在调试模式下运行这些程序或系统,以便检查其输出和行为。

总之,调试shell脚本需要仔细阅读脚本并使用适当的工具和技巧来诊断错误。通过使用上述方法,您可以更轻松地调试和理解脚本的执行过程,并快速纠正错误。

总结

shell 脚本相对于java 代码写的还是相对较少,对于语法糖相对来说不够熟悉,利用好工具 vscode 插件、AIGC的自动能容生成能力,即可完成为日常开发过程解决问题提速。文章来源地址https://www.toymoban.com/news/detail-573375.html

到了这里,关于AIGC 来帮我写个脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • chatgpt帮我写的一个小程序气泡框代码

    效果图 这是一个气泡框 .bubble { position: relative; padding: 10px; border-radius: 8px; background-color: #ddd; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); } .triangle { position: absolute; width: 0; height: 0; top: -10px; left: 50%; margin-left: -10px; border-left: 10px solid transparent; border-right: 10px solid transparent; border-bottom: 10px soli

    2024年02月02日
    浏览(45)
  • Studio Bot - 让 AI 帮我写 Android 代码

    不出所料,今年的 I/O 大会只突出了一个 “AI” 。Google 旗下的各类产品都成了其展示 AI 实力的舞台。连面向开发者的产品 Android Studio 也新增了 Studio bot 功能,希望通过 AI 帮助开发者更轻松地写代码: Studio Bot 使用谷歌编码基础模型 Codey (后者基于最新 PaLM2 大语言模

    2024年02月05日
    浏览(55)
  • 太累了,是时候让AI数字人来帮我干活了(走,上教程)

    阿酷TONY,原创文章,长沙,2023.11.21 关 键 词 :AI数字人,生成式AI,智能数字分身 适用场景 :培训数字人,演讲授课数字人,直播带货数字人 特别说明 :教程用的是国内保利威AI产品,内容为原创。   AI数字人主要的一些应用场景: 客户服务和支持、教育和培训、医疗保

    2024年02月05日
    浏览(30)
  • 帮我写一个关于询问chatGPT进行提问的有效模板需要详细一点

    当您使用ChatGPT时,您可以通过以下步骤使用该模型: 选择一个可用的平台 ChatGPT可以在多个平台上使用,包括网站,应用程序和社交媒体。在选择使用的平台之前,您需要考虑您想要使用ChatGPT的原因以及您的用户基础。 配置API密钥 ChatGPT可以通过API密钥来访问。在使用之前

    2023年04月22日
    浏览(48)
  • 帮我写一个跨年html倒计时代码,达到预定时间切换为放烟花

    以下是一个简单的 HTML 倒计时代码,在跨年时会切换为放烟花的效果: 上面的

    2024年02月03日
    浏览(57)
  • 【AI帮我写代码,上班摸鱼不是梦】手摸手图解CodeWhisperer的安装使用

    除了借助ChatGPT通过问答的方式生成代码,也可以通过IDEA插件在写代码是直接帮助我们生成代码。 目前,IDEA插件有CodeGeeX、CodeWhisperer、Copilot。其中,CodeGeeX和CodeWhisperer是完全免费的,Copilot是收费的,每月10美元。 下面我们来了解CodeWhisperer的安装和使用,如果你还想了解其他

    2024年02月11日
    浏览(44)
  • 【ChatGPT】使用 Cursor !其中集成了免费的 GPT-4 帮我写代码,写文章,聊天(ChatGPT)

    官网是 cursor.so,下载后安装即可使用,无需科学上网。 Github: https://github.com/getcursor/cursor 现在速度又快还免费,只希望收费晚点来。 使用过程中如果一次回复的字数太多了会戛然而止,这时候跟他说“上面的代码没写完,请写完”就可以了。   目录          一、GPT-4在代

    2023年04月12日
    浏览(44)
  • 学习新技术,争做新青年:请ChatGPT帮我写一篇计算机视觉分类算法论文

    本博文主体内容由ChatGPT对话生成,所给出的知识的准确性有待商榷,聊天方式仅供参考,回答的内容需要辨别哈 所对话ChatGPT为3.5版本 技术是第一生产力,冲哇 这些论文链接大部分都是正确的啊,太酷啦 优质论文写作教程推荐如下: 🍊 论文撰写八大技巧与八大心得,一文

    2024年02月07日
    浏览(46)
  • 服务器巡检脚本(linux)

    2024年02月20日
    浏览(44)
  • Linux服务器定时执行脚本清理日志

    程序的日志不正确或者启动脚本命令不正确,随着程序的持续运行,日志文件越来越大,持续占用设备硬盘,如果定期手动清理日志又比较占用大脑CPU和内存,如果忘了就是事故,所以写一个定时执行的脚本去清理日志很有必要。 清理日志有两种方式,一种是清空文件,主要

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包