参考这个分享的curl上传方法编写的脚本,目的是简化 token 获取到上传文件的流程。
个人用在定时文件备份中。
#!/bin/bash
# 检查参数数量
if [ $# -ne 6 ]; then
echo "Usage: $0 --username <username> --password <password> <local-file> <alist-url>"
exit 1
fi
# 解析输入参数
USERNAME=$2
PASSWORD=$4
LOCAL_FILE=$5
REMOTE_PATH=$6
# 从 URL 中提取 alist app 的 base URL
BASE_URL=$(echo $REMOTE_PATH | sed 's|\(https://[^/]*\)/.*|\1|')
# 提取 URL 路径部分(去除 BASE_URL)
REMOTE_FILE_PATH=$(echo $REMOTE_PATH | sed "s|$BASE_URL||")
# 获取 token
RESPONSE=$(curl --silent --header "Content-Type: application/json" \
--request POST --data "{\"username\":\"$USERNAME\", \"password\":\"$PASSWORD\"}" \
"$BASE_URL/api/auth/login")
# 提取 token
TOKEN=$(echo $RESPONSE | grep -o '"token":"[^"]*' | grep -o '[^"]*$')
if [ -z "$TOKEN" ]; then
echo "Error: Failed to get token"
exit 1
fi
# 上传文件
UPLOAD_URL="$BASE_URL/api/fs/put"
curl -# -T "$LOCAL_FILE" "$UPLOAD_URL" \
-H "Authorization: $TOKEN" \
-H "File-Path: $REMOTE_FILE_PATH"
# 提示用户上传完成
if [ $? -eq 0 ]; then
echo "Upload successful!"
else
echo "Upload failed!"
fi
感谢分享,很有用