Linux下通过Curl 上传文件到Aalist 脚本

Alist 是一个支持多种存储的文件列表程序,挂载各大网盘也是非常方便,在服务器内网部署一个alist 并且挂载各大网盘可实现将本地文件的备份和同步到云上。一般情况下的操作就是Alist 的webdav + rclone 的方式,不过 alist 的 webdav 协议遇到大文件会出现问题,但是通过正常的 http 上传就不会有太大的问题。alist api 上传文件的原理是先通过登录账号获取到token ,然后使用带有token的请求上传文件,token 可以通过网页登录的然后浏览器 F12 形式获取,不过这个获取的 token 有一定的时限,所以使用脚本自动化的形式自动获取并实现登录并上传。

脚本

新建一个脚本文件,如: xxx.sh 新建并编辑

Source Code


  1. vim xxx.sh

按 i 把以下脚本复制进去,之后按 esc 在按 :wq保持并退出

Source Code


  1. #!/bin/bash
  2. # 检查参数数量
  3. if [ $# -ne 6 ]; then
  4. echo "Usage: $0 --username <username> --password <password> <local-file> <alist-url>"
  5. exit 1
  6. fi
  7. # 解析输入参数
  8. USERNAME=$2
  9. PASSWORD=$4
  10. LOCAL_FILE=$5
  11. REMOTE_PATH=$6
  12. # 从 URL 中提取 alist app 的 base URL
  13. BASE_URL=$(echo $REMOTE_PATH | sed -E 's|(https?://[^/]+).*|\1|')
  14. # 提取 URL 路径部分(去除 BASE_URL)
  15. REMOTE_FILE_PATH=$(echo $REMOTE_PATH | sed "s|$BASE_URL||")
  16. # 获取 token
  17. RESPONSE=$(curl --location --request POST "$BASE_URL/api/auth/login" \
  18. --header 'Content-Type: application/json' \
  19. --data-raw "{ \"username\": \"$USERNAME\", \"password\": \"$PASSWORD\" }")
  20. # 提取 token
  21. TOKEN=$(echo $RESPONSE | grep -o '"token":"[^"]*' | grep -o '[^"]*$')
  22. if [ -z "$TOKEN" ]; then
  23. echo "Error: Failed to get token"
  24. exit 1
  25. fi
  26. # 上传文件
  27. UPLOAD_URL="$BASE_URL/api/fs/put"
  28. curl -# -T "$LOCAL_FILE" "$UPLOAD_URL" \
  29. -H "Authorization: $TOKEN" \
  30. -H "File-Path: $REMOTE_FILE_PATH/$LOCAL_FILE"
  31. # 提示用户上传完成
  32. if [ $? -eq 0 ]; then
  33. echo "Upload successful!"
  34. else
  35. echo "Upload failed!"
  36. fi

 复制 文本

脚本使用

为脚本赋予执行权限

Source Code


  1. chmod +x xxx.sh

运行脚本

Source Code


  1. ./xxx.sh --username <username> --password <password> <local-file> <alist-url>

替换 <> 中的内容,不保留 <> , --username 和 --password 必须保留

  • <username> alist 登录账号
  • <password> alist 登录密码
  • <local-file> 本地需要上传的文件
  • <ailst-url> alist的地址,如:保存到 /buckup - https://127.0.0.1/buckup ,加上端口的话 https://127.0.0.1:5244/buckup
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值