255 lines
5.7 KiB
Bash
Executable File
255 lines
5.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ============================================
|
|
# NAS 管理工具
|
|
# 提供挂载、卸载、状态检查、日志查看等功能
|
|
# ============================================
|
|
|
|
NAS_IP="192.168.2.154"
|
|
NAS_USER="cfdaily"
|
|
NAS_PASS="Ccf7561523"
|
|
NAS_SHARE="stock"
|
|
MOUNT_POINT="/Users/chufeng/nas/stock"
|
|
LAUNCH_DAEMON_LABEL="com.user.nasmount"
|
|
LOG_DIR="/Users/chufeng/.openclaw/workspace-jiangwei/logs"
|
|
MOUNT_LOG="${LOG_DIR}/nas_mount.log"
|
|
ERROR_LOG="${LOG_DIR}/nas_mount_error.log"
|
|
|
|
# 颜色
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
print_header() {
|
|
echo -e "${BLUE}============================================${NC}"
|
|
echo -e "${BLUE} NAS 管理工具${NC}"
|
|
echo -e "${BLUE}============================================${NC}"
|
|
echo ""
|
|
}
|
|
|
|
check_mounted() {
|
|
if mount | grep -q "$MOUNT_POINT"; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
check_network() {
|
|
ping -c 1 -W 2 "$NAS_IP" &> /dev/null
|
|
}
|
|
|
|
show_status() {
|
|
print_header
|
|
echo "【状态检查】"
|
|
echo ""
|
|
|
|
# 网络状态
|
|
echo -n "网络连接: "
|
|
if check_network; then
|
|
echo -e "${GREEN}✅ 正常 ($NAS_IP)${NC}"
|
|
else
|
|
echo -e "${RED}❌ 无法连接${NC}"
|
|
fi
|
|
|
|
# 挂载状态
|
|
echo -n "NAS 挂载: "
|
|
if check_mounted; then
|
|
echo -e "${GREEN}✅ 已挂载${NC}"
|
|
echo -e " 挂载点: $MOUNT_POINT"
|
|
echo ""
|
|
echo "【挂载点内容】"
|
|
ls -lh "$MOUNT_POINT" 2>/dev/null || echo "无法读取挂载点"
|
|
else
|
|
echo -e "${RED}❌ 未挂载${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
echo "【Launch Daemon 状态】"
|
|
if launchctl list | grep -q "$LAUNCH_DAEMON_LABEL"; then
|
|
echo -e "${GREEN}✅ 正在运行${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ 未运行${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
echo "【磁盘使用情况】"
|
|
if check_mounted; then
|
|
df -h "$MOUNT_POINT"
|
|
else
|
|
echo "NAS 未挂载,无法显示"
|
|
fi
|
|
}
|
|
|
|
mount_nas() {
|
|
print_header
|
|
echo "【挂载 NAS】"
|
|
echo ""
|
|
|
|
if check_mounted; then
|
|
echo -e "${YELLOW}NAS 已经挂载${NC}"
|
|
return 0
|
|
fi
|
|
|
|
if ! check_network; then
|
|
echo -e "${RED}错误: 无法连接到 NAS ($NAS_IP)${NC}"
|
|
return 1
|
|
fi
|
|
|
|
echo "正在挂载..."
|
|
|
|
mkdir -p "$MOUNT_POINT"
|
|
NAS_URL="smb://${NAS_USER}:${NAS_PASS}@${NAS_IP}/${NAS_SHARE}"
|
|
|
|
if /sbin/mount_smbfs "$NAS_URL" "$MOUNT_POINT"; then
|
|
echo -e "${GREEN}✅ NAS 挂载成功!${NC}"
|
|
echo "挂载点: $MOUNT_POINT"
|
|
|
|
# 创建标记文件
|
|
touch "${MOUNT_POINT}/.mounted"
|
|
|
|
# 创建目录结构
|
|
echo ""
|
|
echo "创建目录结构..."
|
|
create_dir_structure
|
|
|
|
return 0
|
|
else
|
|
echo -e "${RED}❌ NAS 挂载失败${NC}"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
umount_nas() {
|
|
print_header
|
|
echo "【卸载 NAS】"
|
|
echo ""
|
|
|
|
if ! check_mounted; then
|
|
echo -e "${YELLOW}NAS 未挂载${NC}"
|
|
return 0
|
|
fi
|
|
|
|
echo "正在卸载..."
|
|
|
|
if umount "$MOUNT_POINT"; then
|
|
echo -e "${GREEN}✅ NAS 卸载成功${NC}"
|
|
return 0
|
|
else
|
|
echo -e "${YELLOW}强制卸载..."
|
|
if umount -f "$MOUNT_POINT"; then
|
|
echo -e "${GREEN}✅ NAS 强制卸载成功${NC}"
|
|
return 0
|
|
else
|
|
echo -e "${RED}❌ NAS 卸载失败${NC}"
|
|
return 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
create_dir_structure() {
|
|
cd "$MOUNT_POINT" || return
|
|
|
|
mkdir -p "A股数据/日线数据" "A股数据/分钟线数据" "A股数据/财务数据"
|
|
mkdir -p "回测结果/策略回测" "回测结果/性能报告"
|
|
mkdir -p "代码库/策略代码" "代码库/工具脚本"
|
|
mkdir -p "临时文件/下载缓存" "临时文件/临时数据"
|
|
|
|
chown -R chufeng:staff "$MOUNT_POINT" 2>/dev/null || true
|
|
}
|
|
|
|
show_logs() {
|
|
print_header
|
|
echo "【日志查看】"
|
|
echo ""
|
|
|
|
if [ ! -f "$MOUNT_LOG" ]; then
|
|
echo -e "${YELLOW}日志文件不存在${NC}"
|
|
return
|
|
fi
|
|
|
|
echo "最近 50 条日志:"
|
|
echo "----------------------------------------"
|
|
tail -50 "$MOUNT_LOG"
|
|
}
|
|
|
|
follow_logs() {
|
|
print_header
|
|
echo "【实时日志】"
|
|
echo "按 Ctrl+C 退出"
|
|
echo "----------------------------------------"
|
|
|
|
if [ ! -f "$MOUNT_LOG" ]; then
|
|
touch "$MOUNT_LOG"
|
|
fi
|
|
|
|
tail -f "$MOUNT_LOG"
|
|
}
|
|
|
|
restart_daemon() {
|
|
print_header
|
|
echo "【重启 Launch Daemon】"
|
|
echo ""
|
|
|
|
echo "停止守护进程..."
|
|
sudo launchctl stop "$LAUNCH_DAEMON_LABEL" 2>/dev/null
|
|
|
|
sleep 2
|
|
|
|
echo "启动守护进程..."
|
|
sudo launchctl start "$LAUNCH_DAEMON_LABEL"
|
|
|
|
echo -e "${GREEN}✅ Launch Daemon 已重启${NC}"
|
|
}
|
|
|
|
show_help() {
|
|
print_header
|
|
echo "使用方法: $0 [命令]"
|
|
echo ""
|
|
echo "命令列表:"
|
|
echo " status - 显示 NAS 状态"
|
|
echo " mount - 手动挂载 NAS"
|
|
echo " umount - 卸载 NAS"
|
|
echo " restart - 重启 Launch Daemon"
|
|
echo " logs - 显示最近日志"
|
|
echo " follow - 实时跟踪日志"
|
|
echo " help - 显示帮助信息"
|
|
echo ""
|
|
echo "示例:"
|
|
echo " $0 status # 查看状态"
|
|
echo " $0 follow # 实时查看日志"
|
|
}
|
|
|
|
# 主逻辑
|
|
case "${1:-status}" in
|
|
status)
|
|
show_status
|
|
;;
|
|
mount)
|
|
mount_nas
|
|
;;
|
|
umount)
|
|
umount_nas
|
|
;;
|
|
restart)
|
|
restart_daemon
|
|
;;
|
|
logs)
|
|
show_logs
|
|
;;
|
|
follow)
|
|
follow_logs
|
|
;;
|
|
help)
|
|
show_help
|
|
;;
|
|
*)
|
|
echo -e "${RED}未知命令: $1${NC}"
|
|
echo ""
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac
|