简化了一些脚本

This commit is contained in:
lsy 2024-11-19 00:00:28 +08:00
parent 7cd0bf71de
commit af47b8f1b5
8 changed files with 181 additions and 191 deletions

View File

@ -1,72 +1,78 @@
#!/bin/bash
echo "1. 查看已安装的脚本"
echo "2. 删除脚本"
declare user_choice
read -p "请输入您的选择:" user_choice
# 显示菜单
function show_menu() {
echo "1. 查看已安装的脚本"
echo "2. 删除脚本"
}
declare script_directory="/var/script"
echo "请输入脚本安装目录,默认是 ${script_directory}"
read -p "请输入:" script_directory
# 获取用户选择
function get_user_choice() {
read -p "请输入您的选择:" user_choice
echo $user_choice
}
if [[ -z $script_directory ]]; then
script_directory="/var/script"
elif ! [[ -d $script_directory ]]; then
echo "该目录不存在"
fi
# 获取脚本目录
function get_script_directory() {
local default_directory="/var/script"
read -p "请输入脚本安装目录(默认是 ${default_directory}" script_directory
[[ -z $script_directory ]] && script_directory=$default_directory
echo $script_directory
}
case $user_choice in
'1')
declare -a installed_scripts
declare script_name
declare script_count=0
for script in "$script_directory"/* ; do
if [[ $script == "${script_directory}/*" ]];then
# 列出已安装的脚本
function list_installed_scripts() {
local directory=$1
declare -a scripts
local count=0
for script in "$directory"/* ; do
if [[ $script == "${directory}/*" ]]; then
echo "该目录没有脚本"
exit
return
fi
script_name=$(awk -F '.' '{print $1}' <<< "$(basename $script)")
local script_name=$(awk -F '.' '{print $1}' <<< "$(basename $script)")
if [[ $script_name == "linuxtool" ]]; then
continue
fi
script_count=$(( script_count+1 ))
echo "${script_count}.${script_name}"
installed_scripts[$script_count]=$script_name
count=$(( count + 1 ))
echo "${count}.${script_name}"
scripts[$count]=$script_name
done
if [ ${#installed_scripts[@]} == 0 ]; then
if [ ${#scripts[@]} == 0 ]; then
echo "该目录没有脚本"
exit
return
fi
;;
'2')
declare -a installed_scripts
declare script_name
declare script_count=0
for script in "$script_directory"/* ; do
if [[ $script == "${script_directory}/*" ]];then
echo "该目录没有脚本"
exit
fi
script_name=$(awk -F '.' '{print $1}' <<< "$(basename $script)")
if [[ $script_name == "linuxtool" ]]; then
continue
fi
script_count=$(( script_count+1 ))
echo "${script_count}.${script_name}"
installed_scripts[$script_count]=$script_name
done
if [ ${#installed_scripts[@]} == 0 ]; then
echo "该目录没有脚本"
exit
fi
read -p "请输入要删除的序号(多个用空格隔开):" script_name
for i in $script_name ; do
if [[ $i =~ [1-${#installed_scripts[@]}] ]]; then
echo "开始删除 ${installed_scripts[$i]}"
(crontab -l 2>/dev/null | grep -v "${installed_scripts[$i]}") | crontab - && echo "已删除脚本的自动任务"
rm -rf "$script_directory/${installed_scripts[$i]}" &> /dev/null
echo "${scripts[@]}"
}
# 删除脚本
function delete_scripts() {
local scripts=("$@")
read -p "请输入要删除的序号(多个用空格隔开):" indices
for i in $indices ; do
if [[ $i =~ ^[1-9][0-9]*$ ]] && [ $i -le ${#scripts[@]} ]; then
echo "开始删除 ${scripts[$i]}"
(crontab -l 2>/dev/null | grep -v "${scripts[$i]}") | crontab - && echo "已删除脚本的自动任务"
rm -rf "$script_directory/${scripts[$i]}" &> /dev/null
echo "删除完成"
fi
done
}
# 主程序
show_menu
user_choice=$(get_user_choice)
script_directory=$(get_script_directory)
case $user_choice in
'1')
installed_scripts=($(list_installed_scripts "$script_directory"))
;;
'2')
installed_scripts=($(list_installed_scripts "$script_directory"))
delete_scripts "${installed_scripts[@]}"
;;
esac

View File

@ -1,7 +1,7 @@
#!/bin/bash
declare installation_directory=$1
declare web_service_port=$2
cd $installation_directory
declare install_path=$1
declare service_port=$2
cd $install_path
cat > "docker-compose.yml" << EOF
version: '3.8'
services:
@ -12,7 +12,7 @@ services:
volumes:
- ./:/opt/alist/data
ports:
- "${web_service_port}:5244"
- "${service_port}:5244"
EOF
docker compose up -d || echo "安装失败" && exit
declare admin_password=$( docker exec -it alist ./alist admin random | grep password | awk '{print $4}')

View File

@ -5,18 +5,18 @@ if ! command -v sudo &> /dev/null; then
exit
fi
declare installation_directory=$1
declare web_service_port=$2
declare install_path=$1
declare service_port=$2
sudo useradd -m git
sudo -u git ssh-keygen -t rsa -b 4096 -C "Gitea Host Key" -f /home/git/.ssh/id_rsa -N ""
sudo -u git sh -c 'cat /home/git/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys'
sudo -u git sh -c 'chmod a+x /usr/local/bin/gitea'
sudo -u git sh -c 'echo "ssh -p '$(( web_service_port+22 ))' -o StrictHostKeyChecking=no git@127.0.0.1 \"SSH_ORIGINAL_COMMAND=\\\"\$SSH_ORIGINAL_COMMAND\\\" \$0 \$@\"" > /usr/local/bin/gitea'
sudo -u git sh -c 'echo "ssh -p '$(( service_port+22 ))' -o StrictHostKeyChecking=no git@127.0.0.1 \"SSH_ORIGINAL_COMMAND=\\\"\$SSH_ORIGINAL_COMMAND\\\" \$0 \$@\"" > /usr/local/bin/gitea'
declare user_id=$( id git | awk -F'[=() ]+' '{print $2}' )
declare group_id=$( id git | awk -F'[=() ]+' '{print $5}' )
cd $installation_directory
cd $install_path
cat > "docker-compose.yml" << EOF
networks:
gitea:
@ -42,8 +42,8 @@ services:
- /etc/localtime:/etc/localtime:ro
- /home/git/.ssh/:/data/git/.ssh
ports:
- "${web_service_port}:3000"
- "$(( web_service_port+22 )):22"
- "${service_port}:3000"
- "$(( service_port+22 )):22"
depends_on:
- db
db:
@ -59,6 +59,6 @@ services:
volumes:
- ./mysql:/var/lib/mysql
EOF
chown -R git:git $installation_directory
chown -R git:git $install_path
sudo docker compose up -d

View File

@ -1,8 +1,8 @@
#!/bin/bash
declare installation_directory=$1
declare web_service_port=$2
declare install_path=$1
declare service_port=$2
cd $installation_directory
cd $install_path
cat > docker-compose.yml << EOF
services:
app:
@ -11,11 +11,11 @@ services:
ports:
- '80:80'
- '443:443'
- '${web_service_port}:81'
- '${service_port}:81'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
EOF
docker compose up -d
echo "管理员邮箱: admin@example.com"
echo "管理员密码: changeme"
echo "Email: admin@example.com"
echo "Password: changeme"

View File

@ -13,36 +13,35 @@ if [[ -z $site_path ]]; then
site_path="/var/www"
elif ! [[ -d $site_path ]]; then
echo "该地址不存在目录"
exit 1
fi
case $user_choice in
'1')
function list_sites() {
local site_number=0
for site in "$site_path"/* ; do
if [[ $site == "${site_path}/*" ]];then
if [[ ! -d $site ]]; then
echo "该地址不存在站点"
return
fi
echo $site
done
;;
'2')
declare -a site_array
declare site_name
declare site_number=0
for site in "$site_path"/* ; do
if [[ $site == "${site_path}/*" ]];then
echo "该地址不存在站点"
exit
fi
site_number=$(( site_number+1 ))
site_name=$(awk -F '.' '{print $1}' <<< "$(basename $site)")
site_number=$(( site_number + 1 ))
site_name=$(awk -F '.' '{print $1}' <<< "$(basename "$site")")
echo "${site_number}.${site_name}"
site_array[$site_number]=$site_name
done
}
case $user_choice in
'1')
list_sites
;;
'2')
declare -a site_array
list_sites
read -p "请输入要删除的序号,多个用空格隔开:" selected_sites
for i in $selected_sites ; do
if [[ $i =~ [1-${#site_array[*]}] ]]; then
if [[ $i =~ ^[1-9][0-9]*$ ]] && [ "$i" -le "${#site_array[@]}" ]; then
echo "开始删除 ${site_array[$i]}"
cd "$site_path/${site_array[$i]}"
cd "$site_path/${site_array[$i]}" || exit
docker compose down &> /dev/null && echo "站点已停止运行"
rm -rf "$site_path/${site_array[$i]}" &> /dev/null
echo "删除完成"

View File

@ -64,29 +64,22 @@ fi
chmod +x "$path/linuxtool/run.sh" &> /dev/null
if [[ -e "${HOME}/.bashrc" ]];then
sed -i '/alias tool.*/d' "${HOME}/.bashrc"
echo "alias tool='$path/linuxtool/run.sh'" | cat >> "${HOME}/.bashrc"
source "${HOME}/.bashrc" &> /dev/null
fi
update_alias() {
local file="$1"
if [[ -e "$file" ]]; then
sed -i '/alias tool.*/d' "$file"
echo "alias tool='$path/linuxtool/run.sh'" >> "$file"
source "$file" &> /dev/null
fi
}
if [[ -e "${HOME}/.profile" ]];then
sed -i '/alias tool.*/d' "${HOME}/.profile"
echo "alias tool='$path/linuxtool/run.sh'" | cat >> "${HOME}/.profile"
source "${HOME}/.profile" &> /dev/null
fi
if [[ -e "${HOME}/.zshrc" ]];then
sed -i '/alias tool.*/d' "${HOME}/.zshrc"
echo "alias tool='$path/linuxtool/run.sh'" | cat >> "${HOME}/.zshrc"
source "${HOME}/.zshrc" &> /dev/null
fi
sed -i '/alias tool.*/d' "/etc/profile"
echo "alias tool='$path/linuxtool/run.sh'" | cat >> "/etc/profile"
for file in "${HOME}/.bashrc" "${HOME}/.profile" "${HOME}/.zshrc" "/etc/profile"; do
update_alias "$file"
done
alias tool="$path/linuxtool/run.sh"
echo "工具箱已经安装成功"
echo "位置:${path}/linuxtool"
echo "命令tool"

View File

@ -2,21 +2,20 @@
declare tool_path=$(cat /etc/profile | grep "tool=" | awk -F "=" '{print $2}' | tr -d "'")
tool_path=$(dirname $tool_path)
rm -rf $tool_path
if [[ -e "${HOME}/.bashrc" ]];then
sed -i '/alias tool.*/d' "${HOME}/.bashrc"
source "${HOME}/.bashrc" &> /dev/null
fi
if [[ -e "${HOME}/.profile" ]];then
sed -i '/alias tool.*/d' "${HOME}/.profile"
source "${HOME}/.profile" &> /dev/null
fi
remove_alias() {
local file="$1"
if [[ -e "$file" ]]; then
sed -i '/alias tool.*/d' "$file"
source "$file" &> /dev/null
fi
}
for file in "${HOME}/.bashrc" "${HOME}/.profile" "${HOME}/.zshrc" "/etc/profile"; do
remove_alias "$file"
done
if [[ -e "${HOME}/.zshrc" ]];then
sed -i '/alias tool.*/d' "${HOME}/.zshrc"
source "${HOME}/.zshrc" &> /dev/null
fi
sed -i '/alias tool.*/d' "/etc/profile"
echo "脚本已完整卸载,公众号 lsy22 可获取一键安装脚本"
kill $PPID &> /dev/null

View File

@ -1,79 +1,72 @@
## 功能概述
### 1. Automation自动化脚本管理
- **作用**该分类包含与自动化脚本相关的功能,主要用于管理和执行各种自动化任务。
- **作用**:管理和执行各种自动化任务。
- **主要文件**
- `manage.sh`提供用户管理脚本的功能,如查看和删除已安装的脚本。
- `acme_update.sh`用于更新 ACME 脚本和强制续订所有证书。
- `backup.sh`实现数据备份功能,支持本地、百度网盘和阿里云盘备份
- `menu.sh`提供交互式菜单,允许用户选择执行不同的功能。
- `up-docker_compose.sh`用于更新 Docker Compose 服务。
- `update.sh`:自动更新系统包管理器配置。
- `manage.sh`:用户管理脚本。
- `acme_update.sh`:更新 ACME 脚本和续订证书。
- `backup.sh`数据备份,支持多种备份方式
- `menu.sh`:交互式菜单,选择执行功能。
- `up-docker_compose.sh`:更新 Docker Compose 服务。
- `update.sh`:自动更新系统包管理器配置。
### 2. DockerDocker 相关功能)
- **作用**该分类专注于 Docker 相关的功能和服务管理。
- **作用**Docker 功能和服务管理。
- **主要文件**
- `image.sh`:管理 Docker 镜像的查看、停止和删除功能
- `manage.sh`提供对 Docker 服务管理功能
- `source.sh`用于配置 Docker 镜像源。
- `test.sh`:检查 Docker 是否安装。
- `alist.sh`、`gitea.sh`、`nginx-proxy-manager.sh`、`safeline.sh`、`siyuan.sh`、`typecho.sh`、`vaultwarden.sh`、`xboard.sh`这些脚本用于安装和配置不同 Docker 应用程序
- `image.sh`:管理 Docker 镜像。
- `manage.sh`Docker 服务管理。
- `source.sh`:配置 Docker 镜像源。
- `test.sh`:检查 Docker 安装。
- `alist.sh`、`gitea.sh`、`nginx-proxy-manager.sh`、`safeline.sh`、`siyuan.sh`、`typecho.sh`、`vaultwarden.sh`、`xboard.sh`:安装和配置不同 Docker 应用。
### 3. Manage系统管理
- **作用**该分类包含与系统管理相关功能。
- **作用**:系统管理相关功能。
- **主要文件**
- `install.sh`用于安装和配置系统工具。
- `unInstall.sh`用于卸载系统工具和清理相关配置。
- `install.sh`:安装和配置系统工具。
- `unInstall.sh`:卸载系统工具和清理配置。
### 4. Other其他功能
- **作用**该分类包含一些其他实用功能。
- **作用**:其他实用功能。
- **主要文件**
- `bbr_open.sh`用于开启 BBR 加速。
- `language.sh`用于更改系统语言设置。
- `reinstall.sh`用于重新安装系统工具。
- `bbr_open.sh`:开启 BBR 加速。
- `language.sh`:更改系统语言设置。
- `reinstall.sh`:重新安装系统工具。
### 5. User用户管理
- **作用**该分类包含与用户和权限管理相关的功能。
- **作用**:用户和权限管理功能。
- **主要文件**
- `key.sh`用于管理 SSH 密钥。
- `manage.sh`提供用户管理功能,如创建、删除用户
- `ssh.sh`用于管理和配置 SSH 服务。
- `test.sh`:检查 SSH 客户端是否安装。
- `key.sh`:管理 SSH 密钥。
- `manage.sh`:用户管理功能。
- `ssh.sh`:管理和配置 SSH 服务。
- `test.sh`:检查 SSH 客户端安装。
### 6. Web网页相关功能
- **作用**该分类主要涉及与网页相关功能。
- **作用**:网页相关功能。
- **主要文件**
- `acme`包含与 SSL 证书管理相关的脚本,如申请、管理和测试
- `apply.sh`用于申请 SSL 证书。
- `manage.sh`:管理已申请证书。
- `test.sh`:测试 SSL 证书有效性。
- `nginx`包含与 Nginx 配置相关脚本。
- `install.sh`用于安装 Nginx。
- `acme`SSL 证书管理脚本。
- `apply.sh`:申请 SSL 证书。
- `manage.sh`:管理已申请证书。
- `test.sh`:测试 SSL 证书有效性。
- `nginx`Nginx 配置相关脚本。
- `install.sh`:安装 Nginx。
- `manage.sh`:管理 Nginx 配置。
- `test.sh`:测试 Nginx 是否正常运行。
### 7. Sources源管理
- **作用**:用于管理软件源的配置。
- **主要文件**
- `sources.sh`:提供查看和更换软件源的功能。
### 7. Sources.sh源管理
- **作用**:管理软件源配置。
### 8. VPNVPN 管理)
- **作用**:用于管理和配置 VPN 服务。
- **主要文件**
- `vpn.sh`:提供 VPN 服务的安装和管理功能。
- **作用**VPN 服务的安装
### 9. Software软件管理
- **作用**:用于安装常用软件包。
- **主要文件**
-
- **作用**:安装常用软件包。
### 菜单机制
该系统通过菜单提供了一个用户友好的界面,允许用户选择可用脚本进行执行。菜单机制包括以下两个子功能:
该系统通过菜单提供用户友好的界面,允许用户选择可用脚本执行。菜单机制包括以下两个子功能:
#### 1. test 菜单
- **功能**test 菜单用于执行特定的测试脚本,验证系统功能的正常运行。用户可以选择要测试的功能,系统会根据选择执行相应的测试脚本。
- **作用**:确保用户在执行其他操作之前,系统的相关功能正常,避免因环境问题导致的错误。
- **功能**:执行特定测试脚本,验证系统功能正常。
#### 2. menu 菜单
- **功能**menu 菜单提供了一个用户友好的界面,允许用户选择可用的脚本进行执行。用户通过输入对应的序号来选择脚本,系统会根据用户的选择执行相应的操作。
- **作用**:作为系统的入口,用户可以通过它访问其他功能,包括执行脚本、配置定时任务等。
- **功能**:用户友好的界面,选择可用脚本执行。