ESP32 BLE连接老是断?手把手教你优化连接稳定性与功耗(附完整代码)
2026/4/22 5:23:45
作为IT从业者,日常会编写大量Ansible、Shell、Python自动化脚本,分散存放不仅难以检索,还存在丢失风险。本文将带你从零搭建Gitee标准化脚本仓库,通过规范化目录结构、Git版本控制、云端备份,实现脚本的高效管理、复用、跨主机迁移,以及单个脚本的精准获取,适合个人或团队运维场景。
# 更新软件源aptupdate -y# 安装Gitaptinstallgit-y# 验证安装结果git--version# 输出类似:git version 2.43.0gitconfig --global user.name"你的名字"gitconfig --global user.email"你的Gitee绑定邮箱"# 配置拉取时默认合并方式(避免后续冲突提示)gitconfig --global pull.rebasefalseEilian-scripts-repo(自定义,建议含scripts标识)git@gitee.com:zjqwzp/Eilian-scripts-repo.git避免每次推送都输入账号密码,配置SSH免密:
# 生成SSH密钥(一路回车,无需设置密码)ssh-keygen -t ed25519 -C"你的Gitee绑定邮箱"# 查看公钥内容(全选复制)cat~/.ssh/id_ed25519.pubssh-T git@gitee.com# 输出类似:Hi Eilian! You've successfully authenticated...创建init_script_repo.sh脚本,一键生成标准化目录结构、README、.gitignore:
cat>init_script_repo.sh<<EOF #!/bin/bash set -e # 遇到错误立即退出 # ======================== 配置项(请修改为你的信息)======================== GITEE_USERNAME="zjqwzp" # 你的Gitee用户名(路径中的用户名) REPO_NAME="Eilian-scripts-repo" # Gitee仓库名称 LOCAL_REPO_PATH="$HOME/scripts" # 本地脚本仓库路径 GIT_NAME="你的名字" # Git提交用户名 GIT_EMAIL="你的Gitee绑定邮箱" # Git提交邮箱 # ========================================================================== # 颜色输出函数 green_echo() { echo -e "\033[32m$1\033[0m"; } red_echo() { echo -e "\033[31m$1\033[0m"; } yellow_echo() { echo -e "\033[33m$1\033[0m"; } # 前置检查:检测Git是否安装 green_echo "===== 0. 前置检查:检测Git环境 =====" if ! command -v git &> /dev/null; then red_echo "未检测到Git,开始自动安装..." apt update -y && apt install git -y if ! command -v git &> /dev/null; then red_echo "Git安装失败,请手动安装后重试!" exit 1 fi green_echo "Git安装成功!" else green_echo "Git已安装:$(git--version)" fi # 第一步:创建标准化目录结构 green_echo "===== 1. 创建脚本目录结构 =====" mkdir -p "${LOCAL_REPO_PATH}"/{ansible,shell,python,archive}/{cloud,monitor,automation,centos,ubuntu,api} green_echo "目录创建完成:${LOCAL_REPO_PATH}" # 第二步:生成标准化README.md green_echo "===== 2. 生成标准化README.md =====" cat > "${LOCAL_REPO_PATH}/README.md" << README_EOF #${REPO_NAME}个人/团队自动化脚本管理仓库,包含Ansible/Shell/Python等运维脚本。 ## 目录说明 | 目录 | 用途 | |--------------|--------------------------| | ansible/ | Ansible Playbook/Role | | shell/ | Shell脚本(按系统分类) | | python/ | Python自动化脚本 | | archive/ | 废弃/归档脚本 | ## 脚本规范 1. 文件名格式:功能_环境.后缀(如:nginx_install_centos.sh) 2. 脚本头部必须包含元数据注释(功能、环境、依赖、版本) 3. Git提交规范:feat(目录): 描述 / fix(目录): 描述 ## 依赖说明 - Shell脚本:bash环境,部分需curl/wget - Python脚本:见requirements.txt - Ansible脚本:Ansible 2.10+ README_EOF # 第三步:生成.gitignore文件(过滤无用文件) green_echo "===== 3. 生成.gitignore文件 =====" cat > "${LOCAL_REPO_PATH}/.gitignore" << GITIGNORE_EOF # 通用忽略文件 *.log *.swp *.tmp .DS_Store .idea/ .vscode/ __pycache__/ *.pyc # 运维脚本忽略文件 *.iso *.tar.gz *.zip password.txt *.key *.pem GITIGNORE_EOF # 第四步:初始化Git仓库并配置 green_echo "===== 4. 初始化Git仓库 =====" cd "${LOCAL_REPO_PATH}" if [ -d .git ]; then yellow_echo "当前目录已存在Git仓库,跳过初始化步骤!" else git init green_echo "Git仓库初始化完成!" fi git config user.name "${GIT_NAME}" git config user.email "${GIT_EMAIL}" green_echo "Git用户信息配置完成:${GIT_NAME}<${GIT_EMAIL}>" # 第五步:关联Gitee远程仓库(SSH方式) green_echo "===== 5. 关联Gitee远程仓库 =====" GITEE_REPO_URL="git@gitee.com:${GITEE_USERNAME}/${REPO_NAME}.git" if git remote | grep -q "origin"; then yellow_echo "已存在origin远程关联,先删除旧关联..." git remote remove origin fi git remote add origin "${GITEE_REPO_URL}" green_echo "已关联远程仓库(SSH):${GITEE_REPO_URL}" # 第六步:提交初始版本 green_echo "===== 6. 提交初始版本 =====" git add . if git rev-parse --verify HEAD &> /dev/null; then yellow_echo "已存在提交记录,跳过初始提交步骤!" else git commit -m "feat: 初始化脚本仓库,创建标准化目录结构" green_echo "初始版本提交完成!" fi # 第七步:添加空目录占位文件(确保Git追踪目录) green_echo "===== 7. 添加空目录占位文件 =====" find . -type d -empty -exec touch {}/.gitkeep \; git add . git commit -m "feat: 添加.gitkeep占位文件,确保空目录被Git追踪" green_echo "占位文件添加完成!" # 完成提示 green_echo "===== 本地仓库初始化完成!=====" green_echo "本地仓库路径:${LOCAL_REPO_PATH}" green_echo "后续执行 git push -u origin master 即可推送到Gitee" EOF# 给脚本添加执行权限chmod+x init_script_repo.sh# 执行脚本./init_script_repo.shtree /root/scripts# 输出类似:/root/scripts ├── ansible │ ├── api │ │ └── .gitkeep │ ├── automation │ │ └── .gitkeep │ ├── centos │ │ └── .gitkeep │ ├── cloud │ │ └── .gitkeep │ ├── monitor │ │ └── .gitkeep │ └── ubuntu │ └── .gitkeep ├── archive │ ├── api │ │ └── .gitkeep │ ├── automation │ │ └── .gitkeep │ ├── centos │ │ └── .gitkeep │ ├── cloud │ │ └── .gitkeep │ ├── monitor │ │ └── .gitkeep │ └── ubuntu │ └── .gitkeep ├── .gitignore ├── python │ ├── api │ │ └── .gitkeep │ ├── automation │ │ └── .gitkeep │ ├── centos │ │ └── .gitkeep │ ├── cloud │ │ └── .gitkeep │ ├── monitor │ │ └── .gitkeep │ └── ubuntu │ └── .gitkeep ├── README.md └── shell ├── api │ └── .gitkeep ├── automation │ └── .gitkeep ├── centos │ └── .gitkeep ├── cloud │ └── .gitkeep ├── monitor │ └── .gitkeep └── ubuntu └── .gitkeep# 进入本地脚本仓库目录cd/root/scripts# 推送到Gitee(首次推送需关联分支)gitpush -u origin master若推送时提示(fetch first)冲突,执行以下命令合并:
# 拉取远程内容并合并(允许无共同历史)gitpull origin master --allow-unrelated-histories# 解决冲突(保留本地版本)gitcheckout --ours README.mdgitcheckout --ours .gitignore# 标记冲突已解决并提交gitaddREADME.md .gitignoregitcommit -m"merge: 解决README和.gitignore冲突,保留本地标准化配置"# 重新推送gitpush -u origin master当更换新主机时,一键复刻仓库环境:
# 安装Gitaptupdate -y&&aptinstallgittree -y# 配置Git全局信息(和原主机一致)gitconfig --global user.name"你的名字"gitconfig --global user.email"你的Gitee绑定邮箱"gitconfig --global pull.rebasefalse# 生成SSH密钥ssh-keygen -t ed25519 -C"你的Gitee绑定邮箱"# 复制公钥并添加到Gitee(步骤同原主机)cat~/.ssh/id_ed25519.pub# 验证SSH连接ssh-T git@gitee.com# 克隆仓库到新主机的~/scripts目录gitclone git@gitee.com:zjqwzp/Eilian-scripts-repo.git ~/scripts# 验证目录结构(和原主机一致)cd~/scripts tree -L2# 示例:安装Ansibleaptinstallansible -y# 示例:安装Python依赖(若仓库有requirements.txt)pip3install-r ~/scripts/requirements.txt适用于需要长期使用多个脚本、同步更新的场景:
aptupdate -y&&aptinstallgit-ygitclone git@gitee.com:zjqwzp/Eilian-scripts-repo.git ~/scriptsgitclone https://gitee.com/zjqwzp/Eilian-scripts-repo.git ~/scriptscd~/scriptsgitpull origin mastercd~/scripts/shell/centosbashnginx_install_centos.sh无需克隆完整仓库,仅获取目标脚本,节省空间:
shell/centos/nginx_install_centos.sh);scp本地脚本路径 root@目标主机IP:/root/# wget方式wgethttps://gitee.com/zjqwzp/Eilian-scripts-repo/raw/master/shell/centos/nginx_install_centos.sh -O /root/nginx_install_centos.sh# curl方式curl-o /root/nginx_install_centos.sh https://gitee.com/zjqwzp/Eilian-scripts-repo/raw/master/shell/centos/nginx_install_centos.shchmod+x /root/nginx_install_centos.shbash/root/nginx_install_centos.sh需使用某目录下多个脚本,无需完整仓库:
mkdir-p ~/scripts&&cd~/scriptsgitinitgitconfig core.sparseCheckouttrue# 开启稀疏克隆echo"shell/centos/">>.git/info/sparse-checkout# 仅拉取shell/centos目录gitremoteaddorigin git@gitee.com:zjqwzp/Eilian-scripts-repo.gitgitpull origin mastercd~/scripts/shell/centosbashnginx_install_centos.sh若其他主机是团队成员使用,需配置仓库权限:
功能_环境.后缀nginx_install_centos.sh、vmware_create_vm.yml、log_analyzer_python.py每个脚本头部必须添加标准化注释,方便检索与维护:
#!/bin/bash############################################################################### 脚本名称: nginx_install_centos.sh# 功能描述: 自动化安装配置Nginx,支持CentOS 7/8,包含防火墙配置与开机自启# 适用环境: CentOS 7.x / CentOS 8.x# 依赖组件: gcc pcre-devel openssl-devel wget# 执行权限: root# 作 者: 你的名字# 创建日期: 2026-01-20# 版本号: v1.0# 修订记录:# v1.0 - 初始版本,实现基础安装与配置# v1.1 - 新增Nginx配置文件备份功能(2026-01-21)##############################################################################提交时按以下格式填写信息,便于追溯历史:
# 新增脚本gitcommit -m"feat(shell): 新增CentOS下Nginx安装脚本 v1.0"# 修复脚本buggitcommit -m"fix(ansible): 修复vmware_create_vm.yml磁盘参数错误"# 更新脚本功能gitcommit -m"update(python): 优化log_analyzer.py日志解析效率"# 归档废弃脚本gitcommit -m"archive(shell): 归档old_backup.sh到archive目录"# 1. 新增/修改脚本后提交gitadd.# 添加所有修改文件gitcommit -m"描述"# 提交到本地仓库# 2. 推送到Gitee(后续无需加-u)gitpush origin master# 3. 从Gitee拉取最新版本(多设备同步)gitpull origin master# 4. 查看提交历史gitlog# 或 git log --oneline(简洁格式)# 5. 回滚到指定版本gitreset --hard 版本号(从git log获取)ssh -T git@gitee.com是否成功Automatic merge failedgit checkout --ours 文件名保留本地版本,或手动编辑冲突文件rm-rf ~/scriptsgitclone git@gitee.com:zjqwzp/Eilian-scripts-repo.git ~/scripts通过本文操作,你已搭建起一套标准化、可复用、可追溯、可跨主机迁移的脚本管理体系:
后续只需按规范新增、修改脚本并提交,即可高效管理所有自动化运维脚本。如果需要团队协作,可在Gitee仓库中添加成员并分配权限,共同维护脚本仓库。