250 lines
7.2 KiB
Bash
Executable File
250 lines
7.2 KiB
Bash
Executable File
#!/bin/bash
|
||
# 文件传输服务便捷函数
|
||
# 使用方法: source fileshare_functions.sh
|
||
|
||
# 默认服务器地址
|
||
FILESHARE_SERVER="${FILESHARE_SERVER:-http://localhost:8000}"
|
||
|
||
# 颜色定义
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# 显示帮助信息
|
||
fileshare_help() {
|
||
echo -e "${BLUE}📡 文件传输服务便捷函数${NC}"
|
||
echo "=================================="
|
||
echo
|
||
echo -e "${YELLOW}📤 上传文件:${NC}"
|
||
echo " upload <文件路径>"
|
||
echo " 示例: upload photo.jpg"
|
||
echo
|
||
echo -e "${YELLOW}📝 分享文本:${NC}"
|
||
echo " share_text <文本内容>"
|
||
echo " 示例: share_text \"Hello World!\""
|
||
echo
|
||
echo -e "${YELLOW}⬇️ 下载文件:${NC}"
|
||
echo " download <分享码>"
|
||
echo " 示例: download AB12CD34"
|
||
echo
|
||
echo -e "${YELLOW}ℹ️ 查看文件信息:${NC}"
|
||
echo " info <分享码>"
|
||
echo " 示例: info AB12CD34"
|
||
echo
|
||
echo -e "${YELLOW}📊 列出所有分享:${NC}"
|
||
echo " list_shares"
|
||
echo
|
||
echo -e "${YELLOW}🔧 设置服务器地址:${NC}"
|
||
echo " set_server <地址>"
|
||
echo " 示例: set_server https://your-domain.com"
|
||
echo
|
||
echo -e "${BLUE}当前服务器: ${FILESHARE_SERVER}${NC}"
|
||
}
|
||
|
||
# 上传文件
|
||
upload() {
|
||
if [ $# -eq 0 ]; then
|
||
echo -e "${RED}❌ 请指定要上传的文件${NC}"
|
||
echo "用法: upload <文件路径>"
|
||
return 1
|
||
fi
|
||
|
||
local file="$1"
|
||
if [ ! -f "$file" ]; then
|
||
echo -e "${RED}❌ 文件不存在: $file${NC}"
|
||
return 1
|
||
fi
|
||
|
||
echo -e "${BLUE}📤 上传文件: $file${NC}"
|
||
local result=$(curl -s -X POST -F "file=@$file" "$FILESHARE_SERVER/api/upload")
|
||
|
||
if echo "$result" | grep -q '"code"'; then
|
||
local code=$(echo "$result" | grep -o '"code":"[^"]*"' | cut -d'"' -f4)
|
||
echo -e "${GREEN}✅ 上传成功!${NC}"
|
||
echo -e "${YELLOW}分享码: $code${NC}"
|
||
echo -e "${BLUE}下载命令: download $code${NC}"
|
||
else
|
||
echo -e "${RED}❌ 上传失败${NC}"
|
||
echo "$result"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
# 分享文本
|
||
share_text() {
|
||
if [ $# -eq 0 ]; then
|
||
echo -e "${RED}❌ 请提供要分享的文本内容${NC}"
|
||
echo "用法: share_text \"文本内容\""
|
||
return 1
|
||
fi
|
||
|
||
local content="$*"
|
||
echo -e "${BLUE}📝 分享文本...${NC}"
|
||
local result=$(curl -s -X POST --data "$content" "$FILESHARE_SERVER/api/text")
|
||
|
||
if echo "$result" | grep -q '"code"'; then
|
||
local code=$(echo "$result" | grep -o '"code":"[^"]*"' | cut -d'"' -f4)
|
||
echo -e "${GREEN}✅ 分享成功!${NC}"
|
||
echo -e "${YELLOW}分享码: $code${NC}"
|
||
echo -e "${BLUE}下载命令: download $code${NC}"
|
||
else
|
||
echo -e "${RED}❌ 分享失败${NC}"
|
||
echo "$result"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
# 下载文件
|
||
download() {
|
||
if [ $# -eq 0 ]; then
|
||
echo -e "${RED}❌ 请提供分享码${NC}"
|
||
echo "用法: download <分享码>"
|
||
return 1
|
||
fi
|
||
|
||
local code="$1"
|
||
echo -e "${BLUE}⬇️ 下载文件: $code${NC}"
|
||
|
||
# 先检查文件信息
|
||
local info_result=$(curl -s "$FILESHARE_SERVER/api/info/$code")
|
||
if echo "$info_result" | grep -q '"filename"'; then
|
||
local filename=$(echo "$info_result" | grep -o '"filename":"[^"]*"' | cut -d'"' -f4)
|
||
echo -e "${BLUE}文件名: $filename${NC}"
|
||
|
||
# 下载文件
|
||
if curl -f -O -J "$FILESHARE_SERVER/api/download/$code"; then
|
||
echo -e "${GREEN}✅ 下载成功!${NC}"
|
||
else
|
||
echo -e "${RED}❌ 下载失败${NC}"
|
||
return 1
|
||
fi
|
||
else
|
||
echo -e "${RED}❌ 分享码不存在或已过期${NC}"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
# 查看文件信息
|
||
info() {
|
||
if [ $# -eq 0 ]; then
|
||
echo -e "${RED}❌ 请提供分享码${NC}"
|
||
echo "用法: info <分享码>"
|
||
return 1
|
||
fi
|
||
|
||
local code="$1"
|
||
echo -e "${BLUE}ℹ️ 查看文件信息: $code${NC}"
|
||
local result=$(curl -s "$FILESHARE_SERVER/api/info/$code")
|
||
|
||
if echo "$result" | grep -q '"filename"'; then
|
||
echo -e "${GREEN}✅ 文件信息:${NC}"
|
||
echo "$result" | python3 -m json.tool 2>/dev/null || echo "$result"
|
||
else
|
||
echo -e "${RED}❌ 分享码不存在或已过期${NC}"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
# 列出所有分享
|
||
list_shares() {
|
||
echo -e "${BLUE}📊 获取分享列表...${NC}"
|
||
local result=$(curl -s "$FILESHARE_SERVER/api/shares")
|
||
|
||
if echo "$result" | grep -q '"total"'; then
|
||
echo -e "${GREEN}✅ 分享列表:${NC}"
|
||
echo "$result" | python3 -m json.tool 2>/dev/null || echo "$result"
|
||
else
|
||
echo -e "${RED}❌ 获取列表失败${NC}"
|
||
echo "$result"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
# 设置服务器地址
|
||
set_server() {
|
||
if [ $# -eq 0 ]; then
|
||
echo -e "${YELLOW}当前服务器: $FILESHARE_SERVER${NC}"
|
||
echo "用法: set_server <服务器地址>"
|
||
return 0
|
||
fi
|
||
|
||
FILESHARE_SERVER="$1"
|
||
echo -e "${GREEN}✅ 服务器地址已设置为: $FILESHARE_SERVER${NC}"
|
||
|
||
# 测试连接
|
||
if curl -s "$FILESHARE_SERVER/api" > /dev/null; then
|
||
echo -e "${GREEN}✅ 服务器连接正常${NC}"
|
||
else
|
||
echo -e "${YELLOW}⚠️ 无法连接到服务器,请检查地址是否正确${NC}"
|
||
fi
|
||
}
|
||
|
||
# 从文件分享文本
|
||
share_file() {
|
||
if [ $# -eq 0 ]; then
|
||
echo -e "${RED}❌ 请指定要分享的文本文件${NC}"
|
||
echo "用法: share_file <文件路径>"
|
||
return 1
|
||
fi
|
||
|
||
local file="$1"
|
||
if [ ! -f "$file" ]; then
|
||
echo -e "${RED}❌ 文件不存在: $file${NC}"
|
||
return 1
|
||
fi
|
||
|
||
echo -e "${BLUE}📝 分享文件内容: $file${NC}"
|
||
local result=$(curl -s -X POST --data "@$file" "$FILESHARE_SERVER/api/text")
|
||
|
||
if echo "$result" | grep -q '"code"'; then
|
||
local code=$(echo "$result" | grep -o '"code":"[^"]*"' | cut -d'"' -f4)
|
||
echo -e "${GREEN}✅ 分享成功!${NC}"
|
||
echo -e "${YELLOW}分享码: $code${NC}"
|
||
echo -e "${BLUE}下载命令: download $code${NC}"
|
||
else
|
||
echo -e "${RED}❌ 分享失败${NC}"
|
||
echo "$result"
|
||
return 1
|
||
fi
|
||
}
|
||
|
||
# 批量上传
|
||
batch_upload() {
|
||
if [ $# -eq 0 ]; then
|
||
echo -e "${RED}❌ 请指定文件或目录${NC}"
|
||
echo "用法: batch_upload <文件1> <文件2> ... 或 batch_upload <目录>/*"
|
||
return 1
|
||
fi
|
||
|
||
echo -e "${BLUE}📤 批量上传文件...${NC}"
|
||
local success_count=0
|
||
local total_count=0
|
||
|
||
for file in "$@"; do
|
||
if [ -f "$file" ]; then
|
||
total_count=$((total_count + 1))
|
||
echo -e "\n${BLUE}上传: $(basename "$file")${NC}"
|
||
if upload "$file"; then
|
||
success_count=$((success_count + 1))
|
||
fi
|
||
fi
|
||
done
|
||
|
||
echo -e "\n${GREEN}✅ 批量上传完成: $success_count/$total_count 成功${NC}"
|
||
}
|
||
|
||
# 自动显示帮助
|
||
echo -e "${GREEN}✅ 文件传输服务便捷函数已加载${NC}"
|
||
echo -e "${BLUE}输入 fileshare_help 查看使用帮助${NC}"
|
||
echo -e "${YELLOW}服务器地址: $FILESHARE_SERVER${NC}"
|
||
|
||
# 创建别名
|
||
alias fs_help='fileshare_help'
|
||
alias fs_upload='upload'
|
||
alias fs_share='share_text'
|
||
alias fs_download='download'
|
||
alias fs_info='info'
|
||
alias fs_list='list_shares'
|
||
alias fs_server='set_server' |