--- title: alist离线脚本 date: 2024-12-10T14:52:23+08:00 lastmod: 2024-12-10T14:52:48+08:00 --- # alist离线脚本 ```shell #!/bin/bash # 获取当前运行脚本的目录 script_dir=$(cd "$(dirname "$0")" && pwd) # 创建挂载目录 mkdir -p "$script_dir/data" touch "$script_dir/data/mytoken.txt" touch "$script_dir/data/myopentoken.txt" touch "$script_dir/data/temp_transfer_folder_id.txt" # 获取 mytoken.txt 文件的大小 mytokenfilesize=$(cat "$script_dir/data/mytoken.txt") mytokenstringsize=${#mytokenfilesize} if [ $mytokenstringsize -le 31 ]; then echo -e "\033[32m" read -p "输入你的阿里云盘 Token(32位长): " token token_len=${#token} if [ $token_len -ne 32 ]; then echo "长度不对,阿里云盘 Token是32位长" echo -e "安装停止,请参考指南配置文件\nhttps://xiaoyaliu.notion.site/xiaoya-docker-69404af849504fa5bcf9f2dd5ecaa75f \n" echo -e "\033[0m" exit else echo $token > "$script_dir/data/mytoken.txt" fi echo -e "\033[0m" fi # 获取 myopentoken.txt 文件的大小 myopentokenfilesize=$(cat "$script_dir/data/myopentoken.txt") myopentokenstringsize=${#myopentokenfilesize} if [ $myopentokenstringsize -le 279 ]; then echo -e "\033[33m" read -p "输入你的阿里云盘 Open Token(335位长): " opentoken opentoken_len=${#opentoken} if [[ $opentoken_len -le 334 ]]; then echo "长度不对,阿里云盘 Open Token是335位" echo -e "安装停止,请参考指南配置文件\nhttps://xiaoyaliu.notion.site/xiaoya-docker-69404af849504fa5bcf9f2dd5ecaa75f \n" echo -e "\033[0m" exit else echo $opentoken > "$script_dir/data/myopentoken.txt" fi echo -e "\033[0m" fi # 获取 temp_transfer_folder_id.txt 文件的大小 folderidfilesize=$(cat "$script_dir/data/temp_transfer_folder_id.txt") folderidstringsize=${#folderidfilesize} if [ $folderidstringsize -le 39 ]; then echo -e "\033[36m" read -p "输入你的阿里云盘转存目录folder id: " folderid folder_id_len=${#folderid} if [ $folder_id_len -ne 40 ]; then echo "长度不对,阿里云盘 folder id是40位长" echo -e "安装停止,请参考指南配置文件\nhttps://xiaoyaliu.notion.site/xiaoya-docker-69404af849504fa5bcf9f2dd5ecaa75f \n" echo -e "\033[0m" exit else echo $folderid > "$script_dir/data/temp_transfer_folder_id.txt" fi echo -e "\033[0m" fi # 获取本地 IP 地址 if command -v ifconfig &> /dev/null; then localip=$(ifconfig -a | grep inet | grep -v 172.17 | grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d "addr:" | head -n1) else localip=$(ip address | grep inet | grep -v 172.17 | grep -v 127.0.0.1 | grep -v inet6 | awk '{print $2}' | tr -d "addr:" | head -n1 | cut -f1 -d"/") fi # 判断是否传入参数 'host',如果是,则设置为 host 网络模式 if [ $1 ]; then if [ $1 == 'host' ]; then if [ ! -s "$script_dir/data/docker_address.txt" ]; then echo "http://$localip:5678" > "$script_dir/data/docker_address.txt" fi docker stop xiaoya 2>/dev/null docker rm xiaoya 2>/dev/null docker stop xiaoya-hostmode 2>/dev/null docker rm xiaoya-hostmode 2>/dev/null docker rmi xiaoyaliu/alist:hostmode docker pull xiaoyaliu/alist:hostmode if [[ -f "$script_dir/data/proxy.txt" ]] && [[ -s "$script_dir/data/proxy.txt" ]]; then proxy_url=$(head -n1 "$script_dir/data/proxy.txt") docker create --env HTTP_PROXY="$proxy_url" --env HTTPS_PROXY="$proxy_url" --env no_proxy="*.aliyundrive.com,*.alipan.com" --network=host -v "$script_dir/data:/data" -v "$script_dir/data:/www/data" --restart=always --name=xiaoya xiaoyaliu/alist:hostmode else docker create --network=host -v "$script_dir/data:/data" -v "$script_dir/data:/www/data" --restart=always --name=xiaoya xiaoyaliu/alist:hostmode fi docker start xiaoya exit fi fi # 设置 Docker 容器启动地址 if [ ! -s "$script_dir/data/docker_address.txt" ]; then echo "http://$localip:5678" > "$script_dir/data/docker_address.txt" fi docker stop xiaoya 2>/dev/null docker rm xiaoya 2>/dev/null docker rmi xiaoyaliu/alist:latest docker pull xiaoyaliu/alist:latest if [[ -f "$script_dir/data/proxy.txt" ]] && [[ -s "$script_dir/data/proxy.txt" ]]; then proxy_url=$(head -n1 "$script_dir/data/proxy.txt") docker create -p 5678:80 -p 2345:2345 -p 2346:2346 -p 2347:2347 --env HTTP_PROXY="$proxy_url" --env HTTPS_PROXY="$proxy_url" --env no_proxy="*.aliyundrive.com,*.alipan.com" -v "$script_dir/data:/data" -v "$script_dir/data:/www/data" --restart=always --name=xiaoya xiaoyaliu/alist:latest else docker create -p 5678:80 -p 2345:2345 -p 2346:2346 -p 2347:2347 -v "$script_dir/data:/data" -v "$script_dir/data:/www/data" --restart=always --name=xiaoya xiaoyaliu/alist:latest fi docker start xiaoya ```