#!/bin/bash

# 定义远程节点列表
nodes=("node02" "node01" "node03")

# 定义本地和远程目录
local_dir="$HOME/yuzhou/jiangcang_vj/"
remote_dir="~/yuzhou/jiangcang_vj"

echo "=== 清理本地日志文件 ==="
rm -f "$local_dir/output.log" "$local_dir/nohup.out"

echo "=== 远端目录初始化 ==="

for node in "${nodes[@]}"; do
    echo "初始化 $node 的目录结构..."

    ssh "$node@$node" "
        set -e
        mkdir -p \
            $remote_dir \
            $remote_dir/data_shards \
            $remote_dir/photo
    "

    echo "✅ $node 目录就绪"
done


echo "=== 开始同步文件到远程节点 ==="

# 遍历远程节点并同步文件
for node in "${nodes[@]}"; do
    echo "正在同步到 $node..."
    
    # 只同步当前目录文件, 不同步任何子目录
    rsync -avz \
        --files-from=<(find "$local_dir" -maxdepth 1 -type f -printf "%f\n") \
        "$local_dir" "$node@$node:$remote_dir/"
    
    if [ $? -ne 0 ]; then
        echo "⚠️  警告: 同步到 $node 失败，跳过该节点。"
        continue  # 继续同步下一个节点
    fi
    echo "✅ 同步到 $node 完成。"
done

echo -e "\n\n"

echo "=== 开始在远程节点上执行对应的 start_nodeXX.sh ==="
#         nohup setsid ./$script_name > ~/yuzhou/jiangcang_vj/nohup_$node.log 2>&1 &
# 在远程节点执行 `start_nodeXX.sh`
for node in "${nodes[@]}"; do
    script_name="start_${node}.sh"
    echo "正在执行 $node 上的 $script_name..."

    # 修改后的执行命令，捕获所有输出信息
    ssh "$node@$node" "
        cd $remote_dir && chmod +x $script_name;
         ./$script_name
    "

    if [ $? -ne 0 ]; then
        echo "⚠️  警告: 在 $node 上执行 $script_name 失败，跳过该节点。"
        continue  # 继续执行下一个节点
    fi
    echo "✅ 在 $node 上成功执行 $script_name。"
done

echo -e "\n\n"

echo "=== 在本地执行 start_node04.sh ==="

# 在本地执行 `start_node04.sh`
cd "$local_dir"
chmod +x start_node04.sh && ./start_node04.sh
if [ $? -ne 0 ]; then
    echo "❌ 错误: 本地执行 start_node04.sh 失败，请检查问题！"
    exit 1
fi

echo "🎉 所有任务执行完毕！"

echo -e "\n\n"

