找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 1464|回复: 6

Padavan安装Alist,ChatGPT版

[复制链接]
发表于 2024-11-7 11:13 | 显示全部楼层 |阅读模式
本帖最后由 yibaogang 于 2024-11-9 23:45 编辑

我用的B70,MTK7621处理器,Padavan是hiboy版本,alist版本使用alist-linux-musl-mipsle,
不是类似机型的,请谨慎使用,或研究下代码,ChatGPT给写的注释非常详细
让ChatGPT做了几个功能,如下
1-自动下载最新版本alist
2-启动alist时,自动检查本地版本和github版本,下载更新最新版本
3-启动后,设置密码为password
4-定时每周日,凌晨3点重启一次alist,会自动检查版本对比,进行更新


操作如下
1,使用winscp 登录,转到/etc/storage目录,
2,右键-新建文件-文件名:alist.sh, 编码选UTF-8
3,然后复制下面ChatGPT给写的代码,直接复制粘贴保存即可!


24-11-09更新
1,判定U盘路径, 必须挂载U盘,不挂载U盘不能用,
2,空间不足50M 不能用
3,启动时,检查本地版本和github版本对比,下载最新版本,你也可以用这个机制,重启/etc/storage/alist.sh restart,让代码给你给新最新版alist
4,加了curl下载失败,用wget下载alist,并加了重新机制,保证能下载下来alist,如果你还是下载不了,只能说明一点问题,网络不通,怎么个不通,我解释不了,找波特兄弟问问
5,让AI 加了3个外接参数  
启动 /etc/storage/alist.sh start  
停止 /etc/storage/alist.sh stop
重启 /etc/storage/alist.sh restart
6,下载的alist解压到U盘根目录/alist文件夹
7,删除下载的临时文件,节省空间
8,ChatGPT添加了很多很详细的中文注释,懂代码变成逻辑的兄弟可以自行修改(貌似我用那个AI 不叫ChatGPT,叫Smart,反正你给AI要求,他给你改,你在测试!就是有时候理解不了我说的,把人气个半死)
9,这是个Padavan路由器通用脚本,VERSION="alist-linux-musl-mipsle.tar.gz" 修改这个参数的版本 就可以下载其他类型版本的alist,各种常量 变量,代码上有中文注释!
这代码我使用了1天,暂时没有发现什么大问题, 有bug的兄弟可以发出来,一起研究一下!


  1. #!/bin/sh

  2. # 设置版本常量
  3. VERSION="alist-linux-musl-mipsle.tar.gz"
  4. GITHUB_API="https://api.github.com/repos/alist-org/alist/releases/latest"
  5. DOWNLOAD_PREFIX="https://github.com/alist-org/alist/releases/latest/download"

  6. # 检测 U 盘挂载路径
  7. upanPath="`df -m | grep /dev/mmcb | grep "/media" | awk '{print $NF}' | sort -u | awk 'NR==1'`"
  8. [ -z "$upanPath" ] && upanPath="`df -m | grep /dev/sd | grep "/media" | awk '{print $NF}' | sort -u | awk 'NR==1'`"

  9. # 设置路径变量
  10. alist_config="$upanPath/data"
  11. alist_path="$upanPath/alist"
  12. log_file="/tmp/alist_download.log"

  13. # 记录日志函数
  14. log_message() {
  15.     logger -t "Alist:" "$1"  # 将消息记录到系统日志
  16. }

  17. stop_alist() {
  18.     log_message "停止本地运行的 AList..."
  19.     "$alist_path"/alist stop
  20.     killall alist
  21.     killall -9 alist
  22.     sleep 2  # 等待一段时间以确保进程完全停止

  23.     if [ -z "$(pidof alist)" ]; then
  24.         log_message "进程已关闭"
  25.     else
  26.         log_message "进程未能关闭,请检查!"
  27.     fi
  28. }

  29. get_latest_version() {
  30.     local tag
  31.     # 尝试使用 curl 获取最新版本号
  32.     tag=$(curl -k --silent "$GITHUB_API" | grep -oP '"tag_name":\s*"\K[^"]+')

  33.     # 如果 curl 失败,尝试使用 wget
  34.     if [ -z "$tag" ]; then
  35.         tag=$(wget -q -O - "$GITHUB_API" | grep -oP '"tag_name":\s*"\K[^"]+')
  36.     fi

  37.     # 检查是否成功获取版本号
  38.     if [ -z "$tag" ]; then
  39.         log_message "未能获取最新版本号,请检查网络连接或 GitHub API。"
  40.         exit 1
  41.     fi

  42.     echo "$tag"
  43. }

  44. get_alist_port() {
  45.     alist_port=$(grep '"port":' "$alist_config/config.json" | awk -F ': ' '{print $2}' | tr -d ',')
  46.    
  47.     if [ -z "$alist_port" ]; then
  48.         log_message "未能获取 AList 端口,请检查配置文件。"
  49.         exit 1
  50.     fi

  51.     echo "$alist_port"
  52. }

  53. download_alist() {
  54.     local download_url="$1"
  55.     local output_file="$2"
  56.     local retries=3
  57.     local count=0

  58.     while [ $count -lt $retries ]; do
  59.         log_message "尝试下载 AList..."
  60.         if curl -L --output "$output_file" "$download_url" --progress-bar 2>&1 | tee -a "$log_file"; then
  61.             log_message "使用 curl 下载成功: $output_file"
  62.             return 0
  63.         else
  64.             log_message "curl 下载失败,尝试使用 wget..."
  65.             if wget --no-check-certificate -O "$output_file" "$download_url" --show-progress 2>&1 | tee -a "$log_file"; then
  66.                 log_message "使用 wget 下载成功: $output_file"
  67.                 return 0
  68.             fi
  69.         fi
  70.         count=$((count + 1))
  71.         log_message "下载失败,重试 $count/$retries..."
  72.         sleep 2  # 等待一段时间再重试
  73.     done

  74.     log_message "下载失败,请检查下载链接或网络连接。"
  75.     return 1
  76. }

  77. alist_start() {
  78.     if [ -z "$upanPath" ]; then
  79.         log_message "未挂载存储设备,无法安装 AList。"
  80.         exit 1
  81.     else
  82.         available_space=$(df -m "$upanPath" | awk 'NR==2 {print $4}')
  83.         log_message "挂载设备剩余容量: ${available_space}MB"

  84.         MIN_SPACE=50
  85.         if [ "$available_space" -lt "$MIN_SPACE" ]; then
  86.             log_message "挂载设备剩余容量不足,至少需要 ${MIN_SPACE}MB。"
  87.             exit 1
  88.         else
  89.             log_message "获取最新版本信息..."
  90.             latest_version=$(get_latest_version)
  91.             local_version_file="$alist_path/version.txt"
  92.             local_version="0.0.0"
  93.             
  94.             if [ -f "$local_version_file" ]; then
  95.                 local_version=$(cat "$local_version_file")
  96.             fi

  97.             log_message "本地版本: $local_version, 最新版本: $latest_version"

  98.             if [ "$local_version" = "$latest_version" ]; then
  99.                 log_message "本地版本已为最新,不需要更新。"
  100.                 log_message "启动 AList 服务..."
  101.                 "$alist_path/alist" server &

  102.                 # 检查 AList 是否成功启动
  103.                 sleep 5  # 等待 AList 启动
  104.                 if pgrep -f "$alist_path/alist" > /dev/null; then
  105.                     log_message "AList 启动成功!"
  106.                     alist_port=$(get_alist_port)
  107.                     log_message "管理地址: http://$(nvram get lan_ipaddr):$alist_port,账号: admin,密码: password"
  108.                 else
  109.                     log_message "AList 启动失败,请检查日志!"
  110.                     exit 1
  111.                 fi
  112.             else
  113.                 log_message "发现新版本,准备更新..."
  114.                 alist_Installer "$latest_version" "$local_version_file"
  115.             fi
  116.         fi
  117.     fi
  118. }

  119. alist_Installer() {
  120.     stop_alist

  121.     log_message "下载最新的 AList..."
  122.     download_url="${DOWNLOAD_PREFIX}/${VERSION}"
  123.     output_file="/tmp/$VERSION"

  124.     if download_alist "$download_url" "$output_file"; then
  125.         log_message "下载完成: $output_file"
  126.         log_message "解压$VERSION到$alist_path"
  127.         mkdir -p "$alist_path"
  128.         tar -zxvf "$output_file" -C "$alist_path"

  129.         chmod +x "$alist_path/alist"
  130.         rm "$output_file"

  131.         # 更新本地版本号
  132.         echo "$latest_version" > "$local_version_file"

  133.         log_message "启动 AList 服务..."
  134.         "$alist_path/alist" server &

  135.         sleep 5

  136.         if pgrep -f "$alist_path/alist" > /dev/null; then
  137.             log_message "AList 启动成功!"

  138.             if [ ! -f "$alist_config/config.json" ]; then
  139.                 log_message "首次启动,设置管理员密码..."
  140.                 NEW_PASSWORD="password"
  141.                 "$alist_path/alist" admin set "$NEW_PASSWORD"
  142.             else
  143.                 log_message "非首次启动,无需设置密码。"
  144.             fi

  145.             # 获取管理地址
  146.             alist_port=$(get_alist_port)
  147.             log_message "AList 已成功启动!管理地址: http://$(nvram get lan_ipaddr):$alist_port,账号: admin,密码: $NEW_PASSWORD"
  148.         else
  149.             log_message "AList 启动失败,请检查日志!"
  150.             exit 1
  151.         fi
  152.     else
  153.         exit 1
  154.     fi
  155. }

  156. alist_restart () {
  157.     log_message "Alist重新启动"
  158.     stop_alist
  159.     alist_start
  160. }

  161. # 检查传入的参数
  162. case "$1" in
  163.     start)
  164.         alist_start
  165.         ;;
  166.     stop)
  167.         stop_alist
  168.         ;;   
  169.     restart)
  170.         alist_restart
  171.         ;;
  172.     *)
  173.         echo "用法: $0 {start|stop|restart}"
  174.         exit 1
  175.         ;;
  176. esac
复制代码



4,使用putty登录
  1. #给alist.sh赋予执行权限
  2. chmod +x /etc/storage/alist.sh
复制代码
5,运行脚本
  1. /etc/storage/alist.sh start
复制代码


6,设置开机启动alist
在 自定义设置-脚本-在路由器启动后执行,添加如下代码,保存应用设置
  1. #Alist开机自启
  2. /etc/storage/alist.sh &
复制代码

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
 楼主| 发表于 2024-11-7 11:18 | 显示全部楼层
对比这个https://www.right.com.cn/forum/f ... ead&tid=8281135
8267仿改的HIBOY大佬的脚本,我觉得还是有差距的,hiboy的脚本里面各种判定磁盘,各种判定文件,各种常量 变量的使用,  发给ChatGPT,它都是懵逼的!
好在ChatGPT写的脚本代码比较简洁明了,方便 仿改其他程序的脚本,难度会小一些!
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-11-7 18:20 来自手机 | 显示全部楼层
本帖最后由 770622144 于 2024-11-7 21:23 编辑


ov  7 21:10:03 AListInstaller: 下载失败,请检查网络连接或下载链接。
Nov  7 21:11:08 AListInstaller: AList 已安装,检查本地版本...
Nov  7 21:11:08 AListInstaller: 未找到本地版本文件,开始下载 AList v3.39.1...
Nov  7 21:11:08 AListInstaller: wget: unrecognized option `--show-progress'
Nov  7 21:11:08 AListInstaller: BusyBox v1.29.3 (2024-05-31 22:24:00 CST) multi-call binary.
Nov  7 21:11:08 AListInstaller:
Nov  7 21:11:08 AListInstaller: Usage: wget [-c|--continue] [--spider] [-q|--quiet] [-O|--output-document FILE]
Nov  7 21:11:08 AListInstaller: [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]
Nov  7 21:11:08 AListInstaller: [-S|--server-response] [-U|--user-agent AGENT] [-T SEC] URL...
Nov  7 21:11:08 AListInstaller:
Nov  7 21:11:08 AListInstaller: Retrieve files via HTTP or FTP
Nov  7 21:11:08 AListInstaller:
Nov  7 21:11:09 AListInstaller: 下载失败,请检查网络连接或下载链接。
Nov  7 21:16:28 AListInstaller: AList 已安装,检查本地版本...
Nov  7 21:16:28 AListInstaller: 未找到本地版本文件,开始下载 AList v3.39.1...
Nov  7 21:16:28 AListInstaller: wget: unrecognized option `--show-progress'
Nov  7 21:16:28 AListInstaller: BusyBox v1.29.3 (2024-05-31 22:24:00 CST) multi-call binary.
Nov  7 21:16:28 AListInstaller:
Nov  7 21:16:28 AListInstaller: Usage: wget [-c|--continue] [--spider] [-q|--quiet] [-O|--output-document FILE]
Nov  7 21:16:28 AListInstaller: [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]
Nov  7 21:16:28 AListInstaller: [-S|--server-response] [-U|--user-agent AGENT] [-T SEC] URL...
Nov  7 21:16:28 AListInstaller:
Nov  7 21:16:28 AListInstaller: Retrieve files via HTTP or FTP
Nov  7 21:16:28 AListInstaller:
Nov  7 21:16:29 AListInstaller: 下载失败,请检查网络连接或下载链接。

点评

这次代码加了使用curl和wget 两种工具下载,并加了重试机制, 保证能下载, 当然你网络也得能github,你试试吧!  发表于 2024-11-9 23:43
看来代码还是有bug呀,我再问问ai,你也可以尝试登录you.com,问问ai,ChatGPT每天可以问5次,samter可以每天问几十次,  详情 回复 发表于 2024-11-8 13:30
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2024-11-8 13:30 来自手机 | 显示全部楼层
770622144 发表于 2024-11-7 18:20
ov  7 21:10:03 AListInstaller: 下载失败,请检查网络连接或下载链接。
Nov  7 21:11:08 AListInstaller: ...

看来代码还是有bug呀,我再问问ai,你也可以尝试登录you.com,问问ai,ChatGPT每天可以问5次,samter可以每天问几十次,

点评

可以了 Nov 11 16:53:03 Alist:: 使用 curl 下载成功: /tmp/alist-linux-musl-mipsle.tar.gz Nov 11 16:53:03 Alist:: 下载完成: /tmp/alist-linux-musl-mipsle.tar.gz Nov 11 16:53:03 Alist:: 解压alist-linux-mus  详情 回复 发表于 2024-11-11 17:42
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2024-11-11 17:42 | 显示全部楼层
本帖最后由 770622144 于 2024-11-13 07:16 编辑
yibaogang 发表于 2024-11-8 13:30
看来代码还是有bug呀,我再问问ai,你也可以尝试登录you.com,问问ai,ChatGPT每天可以问5次,samter可以 ...

11/9更新后可以用    第二天又挂了      大神在那里可以手动关闭定时重启及新版本更新
Nov 11 16:53:03 Alist:: 使用 curl 下载成功: /tmp/alist-linux-musl-mipsle.tar.gz
Nov 11 16:53:03 Alist:: 下载完成: /tmp/alist-linux-musl-mipsle.tar.gz
Nov 11 16:53:03 Alist:: 解压alist-linux-musl-mipsle.tar.gz到/media/AiDisk_a1/alist
Nov 11 16:53:13 Alist:: 启动 AList 服务...
Nov 11 16:53:18 Alist:: AList 启动成功!
Nov 11 16:53:18 Alist:: 首次启动,设置管理员密码...
Nov 11 16:53:21 Alist:: 未能获取 AList 端口,请检查配置文件。
Nov 11 16:53:21 Alist:: AList 已成功启动!管理地址: http://192.168.8.1:,账号: admin,密码: password

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-24 01:41

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表