简化了一些脚本
This commit is contained in:
parent
7cd0bf71de
commit
af47b8f1b5
@ -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
|
||||
}
|
||||
|
||||
# 列出已安装的脚本
|
||||
function list_installed_scripts() {
|
||||
local directory=$1
|
||||
declare -a scripts
|
||||
local count=0
|
||||
|
||||
for script in "$directory"/* ; do
|
||||
if [[ $script == "${directory}/*" ]]; then
|
||||
echo "该目录没有脚本"
|
||||
return
|
||||
fi
|
||||
local script_name=$(awk -F '.' '{print $1}' <<< "$(basename $script)")
|
||||
if [[ $script_name == "linuxtool" ]]; then
|
||||
continue
|
||||
fi
|
||||
count=$(( count + 1 ))
|
||||
echo "${count}.${script_name}"
|
||||
scripts[$count]=$script_name
|
||||
done
|
||||
|
||||
if [ ${#scripts[@]} == 0 ]; then
|
||||
echo "该目录没有脚本"
|
||||
return
|
||||
fi
|
||||
|
||||
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')
|
||||
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
|
||||
;;
|
||||
installed_scripts=($(list_installed_scripts "$script_directory"))
|
||||
;;
|
||||
'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 "删除完成"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
installed_scripts=($(list_installed_scripts "$script_directory"))
|
||||
delete_scripts "${installed_scripts[@]}"
|
||||
;;
|
||||
esac
|
@ -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}')
|
||||
|
@ -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
|
||||
|
||||
|
@ -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"
|
||||
|
@ -13,41 +13,40 @@ if [[ -z $site_path ]]; then
|
||||
site_path="/var/www"
|
||||
elif ! [[ -d $site_path ]]; then
|
||||
echo "该地址不存在目录"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function list_sites() {
|
||||
local site_number=0
|
||||
for site in "$site_path"/* ; do
|
||||
if [[ ! -d $site ]]; then
|
||||
echo "该地址不存在站点"
|
||||
return
|
||||
fi
|
||||
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')
|
||||
for site in "$site_path"/* ; do
|
||||
if [[ $site == "${site_path}/*" ]];then
|
||||
echo "该地址不存在站点"
|
||||
fi
|
||||
echo $site
|
||||
done
|
||||
;;
|
||||
list_sites
|
||||
;;
|
||||
'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)")
|
||||
echo "${site_number}.${site_name}"
|
||||
site_array[$site_number]=$site_name
|
||||
done
|
||||
read -p "请输入要删除的序号,多个用空格隔开:" selected_sites
|
||||
for i in $selected_sites ; do
|
||||
if [[ $i =~ [1-${#site_array[*]}] ]]; then
|
||||
echo "开始删除 ${site_array[$i]}"
|
||||
cd "$site_path/${site_array[$i]}"
|
||||
docker compose down &> /dev/null && echo "站点已停止运行"
|
||||
rm -rf "$site_path/${site_array[$i]}" &> /dev/null
|
||||
echo "删除完成"
|
||||
fi
|
||||
done
|
||||
echo "删除完成"
|
||||
;;
|
||||
declare -a site_array
|
||||
list_sites
|
||||
read -p "请输入要删除的序号,多个用空格隔开:" selected_sites
|
||||
for i in $selected_sites ; do
|
||||
if [[ $i =~ ^[1-9][0-9]*$ ]] && [ "$i" -le "${#site_array[@]}" ]; then
|
||||
echo "开始删除 ${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 "删除完成"
|
||||
fi
|
||||
done
|
||||
echo "删除完成"
|
||||
;;
|
||||
esac
|
@ -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"
|
||||
|
@ -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
|
87
README.md
87
README.md
@ -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. Docker(Docker 相关功能)
|
||||
- **作用**:该分类专注于 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. VPN(VPN 管理)
|
||||
- **作用**:用于管理和配置 VPN 服务。
|
||||
- **主要文件**:
|
||||
- `vpn.sh`:提供 VPN 服务的安装和管理功能。
|
||||
- **作用**:VPN 服务的安装
|
||||
|
||||
### 9. Software(软件管理)
|
||||
- **作用**:用于安装常用软件包。
|
||||
- **主要文件**:
|
||||
-
|
||||
- **作用**:安装常用软件包。
|
||||
|
||||
|
||||
### 菜单机制
|
||||
该系统通过菜单提供了一个用户友好的界面,允许用户选择可用的脚本进行执行。菜单机制包括以下两个子功能:
|
||||
该系统通过菜单提供用户友好的界面,允许用户选择可用脚本执行。菜单机制包括以下两个子功能:
|
||||
|
||||
#### 1. test 菜单
|
||||
- **功能**:test 菜单用于执行特定的测试脚本,验证系统功能的正常运行。用户可以选择要测试的功能,系统会根据选择执行相应的测试脚本。
|
||||
- **作用**:确保用户在执行其他操作之前,系统的相关功能正常,避免因环境问题导致的错误。
|
||||
- **功能**:执行特定测试脚本,验证系统功能正常。
|
||||
|
||||
#### 2. menu 菜单
|
||||
- **功能**:menu 菜单提供了一个用户友好的界面,允许用户选择可用的脚本进行执行。用户通过输入对应的序号来选择脚本,系统会根据用户的选择执行相应的操作。
|
||||
- **作用**:作为系统的入口,用户可以通过它访问其他功能,包括执行脚本、配置定时任务等。
|
||||
- **功能**:用户友好的界面,选择可用脚本执行。
|
||||
|
Loading…
Reference in New Issue
Block a user