乌班图& PVE下n2n自动部署脚本

# 乌班图版本,请注意目录结构
#!/bin/bash 

# 读取用户输入的虚拟网名称,并存储在变量community中
read -p "请输入虚拟网名称:" community

# 读取用户输入的本机IP地址,并存储在变量name中
read -p "请输入本机要使用的ip地址:" name

# 读取用户输入的服务器地址及端口,并存储在变量host中
read -p "请输入服务器地址及端口:" host

# 选择N2N版本
echo "可选版本: 3.0-stable,2.8-stable,2.6-stable,2.4-stable"
read -p "请选择N2N版本:" n2n_version

# 创建n2n启动脚本
echo "sudo /usr/local/sbin/edge -a $name -c $community -l $host" > /usr/sbin/n2n

# 创建停止n2n的脚本
echo "sudo killall -9 edge" > /usr/sbin/noff

# 使脚本文件可执行
chmod +x /usr/sbin/n2n
chmod +x /usr/sbin/noff

echo "拷贝n2n成功!"

# 下载并解压N2N源代码
if [ ! -d "n2n" ]; then
    git clone https://github.com/ntop/n2n.git
fi

# 进入n2n源代码目录
cd n2n || { echo "n2n源代码目录不存在,请检查文件结构。"; exit 1; }

# 切换到选择的N2N版本分支
case $n2n_version in
    "3.0-stable")
        git checkout 3.0-stable
        ;;
    "2.8-stable")
        git checkout 2.8-stable
        ;;
    "2.6-stable")
        git checkout 2.6-stable
        ;;
    "2.4-stable")
        git checkout 2.4-stable
        ;;
    *)
        echo "无效的N2N版本选择,请选择3.0-stable,2.8-stable,2.6-stable,2.4-stable。"
        exit 1
        ;;
esac

# 安装必要的依赖
if command -v apt-get >/dev/null; then
    sudo apt-get update
    sudo apt-get install -y libssl-dev cmake net-tools gcc g++
elif command -v yum >/dev/null; then
    sudo yum install -y openssl-devel cmake net-tools gcc gcc-c++
else
    echo "未检测到apt-get或yum,请确保您的系统已安装这些包管理器。"
    exit 1
fi

# 编译安装n2n
mkdir -p build
cd build || { echo "无法进入build目录,请检查文件结构。"; exit 1; }
cmake ..
make && sudo make install

# 检查edge二进制文件是否存在
if [ ! -f /usr/local/sbin/edge ]; then
    echo "edge 二进制文件未找到,请检查编译安装是否成功。"
    exit 1
fi

# 创建n2n配置文件
sudo mkdir -p /etc/n2n
sudo tee /etc/n2n/edge.conf > /dev/null <<EOF
# n2n edge configuration file
-a $name
-c $community
-l $host
EOF
echo "n2n配置文件已创建。"

# 运行n2n
/usr/sbin/n2n > /var/log/n2n.log 2>&1 &

echo "n2n安装成功,正在检查连接状态,请等待"

# 等待5秒
sleep 5

# 使用用户输入的服务器地址进行ping测试
if ! ping -Q 2 -c 2 -t 64 $(echo $host | cut -d: -f1); then
    echo "`date '+%Y-%m-%d %T'` n2n 连接服务器失败 !"
else
    echo "`date '+%Y-%m-%d %T'` n2n 连接服务器成功 !"
fi

# 检查n2n接口是否UP
if ! ifconfig | grep -q "edge0"; then
    echo "n2n接口未启动,请检查n2n配置。"
    exit 1
fi

# 检查路由表
# 获取用户输入的IP地址的网络部分
network=$(echo $name | cut -d. -f1-3).0/24
if ! ip route | grep -q "$network dev edge0"; then
    sudo ip route add $network dev edge0
fi

# 检查防火墙设置
sudo ufw allow $(echo $host | cut -d: -f2)/udp

# 检查n2n的MTU设置
sudo ifconfig edge0 mtu 1400

# 重新启动n2n服务
sudo killall -9 edge
sudo /usr/sbin/n2n &

# 检查网络接口状态
ifconfig edge0

# 检查IP地址分配
if ! ifconfig edge0 | grep -q "$name"; then
    echo "n2n接口未分配正确的IP地址,请检查n2n配置。"
    exit 1
fi

# 检查ARP表
arp -a

# 检查n2n的社区支持
echo "如果以上方法都无效,可以在n2n的社区或者论坛寻求帮助,提供详细的配置和日志信息。"

# 检查网络拓扑
echo "确保网络拓扑中没有防火墙、路由器或其他设备阻止n2n的流量。"

echo "部署脚本执行完毕。"

# 检查系统日志(限制输出时间)
echo "正在检查系统日志,请等待..."
sudo tail -n 50 /var/log/syslog

目录结构是: 

 Proxmox VE 版本

#  Proxmox VE 
#!/bin/bash

# 检查并安装必要的依赖
if ! command -v git >/dev/null; then
    echo "安装 git..."
    apt-get update
    apt-get install -y git
fi

# 读取用户输入的虚拟网名称,并存储在变量community中
read -p "请输入虚拟网名称:" community

# 读取用户输入的本机IP地址,并存储在变量name中
read -p "请输入本机要使用的ip地址:" name

# 读取用户输入的服务器地址及端口,并存储在变量host中
read -p "请输入服务器地址及端口:" host

# 选择N2N版本
echo "可选版本: 3.0-stable,2.8-stable,2.6-stable,2.4-stable"
read -p "请选择N2N版本:" n2n_version

# 创建n2n启动脚本
echo "sudo /usr/local/sbin/edge -a $name -c $community -l $host" > /usr/local/bin/n2n

# 创建停止n2n的脚本
echo "sudo killall -9 edge" > /usr/local/bin/noff

# 使脚本文件可执行
chmod +x /usr/local/bin/n2n
chmod +x /usr/local/bin/noff

echo "拷贝n2n成功!"

# 下载并解压N2N源代码
if [ ! -d "/n2n/n2n" ]; then
    rm -rf /n2n/n2n  # 删除旧的源代码目录
    mkdir -p /n2n
    git clone https://github.com/ntop/n2n.git /n2n/n2n
fi

# 进入n2n源代码目录
cd /n2n/n2n || { echo "n2n源代码目录不存在,请检查文件结构。"; exit 1; }

# 切换到选择的N2N版本分支
case $n2n_version in
    "3.0-stable")
        git checkout 3.0-stable
        ;;
    "2.8-stable")
        git checkout 2.8-stable
        ;;
    "2.6-stable")
        git checkout 2.6-stable
        ;;
    "2.4-stable")
        git checkout 2.4-stable
        ;;
    *)
        echo "无效的N2N版本选择,请选择3.0-stable,2.8-stable,2.6-stable,2.4-stable。"
        exit 1
        ;;
esac

# 安装必要的依赖
apt-get update
apt-get install -y libssl-dev cmake net-tools gcc g++ autoconf automake libtool

# 编译n2n
mkdir -p build
cd build || { echo "无法进入build目录,请检查文件结构。"; exit 1; }
cmake ..
make

# 检查edge二进制文件是否编译成功
if [ ! -f /n2n/n2n/build/edge ]; then
    echo "edge 二进制文件未找到,请检查编译是否成功。"
    exit 1
fi

# 安装edge二进制文件
sudo cp /n2n/n2n/build/edge /usr/local/sbin/

# 检查edge二进制文件是否安装成功
if [ ! -f /usr/local/sbin/edge ]; then
    echo "edge 二进制文件未找到,请检查安装路径。"
    exit 1
fi

# 创建n2n配置文件
mkdir -p /etc/n2n
cat > /etc/n2n/edge.conf <<EOF
# n2n edge configuration file
-a $name
-c $community
-l $host
EOF
echo "n2n配置文件已创建。"

# 运行n2n
/usr/local/bin/n2n > /var/log/n2n.log 2>&1 &

echo "n2n安装成功,正在检查连接状态,请等待"

# 等待5秒
sleep 5

# 使用用户输入的服务器地址进行ping测试
if ! ping -c 2 -W 2 $(echo $host | cut -d: -f1); then
    echo "`date '+%Y-%m-%d %T'` n2n 连接服务器失败 !"
else
    echo "`date '+%Y-%m-%d %T'` n2n 连接服务器成功 !"
fi

# 检查n2n接口是否UP
if ! ip link show | grep -q "edge0"; then
    echo "n2n接口未启动,请检查n2n配置。"
    exit 1
fi

# 检查路由表
network=$(echo $name | cut -d. -f1-3).0/24
if ! ip route | grep -q "$network dev edge0"; then
    ip route add $network dev edge0
fi

# 检查防火墙设置
ufw allow $(echo $host | cut -d: -f2)/udp

# 检查n2n的MTU设置
ip link set dev edge0 mtu 1400

# 重新启动n2n服务
killall -9 edge
/usr/local/bin/n2n &

# 检查网络接口状态
ip link show edge0

# 检查IP地址分配
if ! ip addr show edge0 | grep -q "$name"; then
    echo "n2n接口未分配正确的IP地址,请检查n2n配置。"
    exit 1
fi

# 检查ARP表
arp -a

echo "部署脚本执行完毕。"

# 检查系统日志(限制输出时间)
echo "正在检查系统日志,请等待..."
tail -n 50 /var/log/syslog

&lt;think&gt;好的,用户想在Ubuntu系统上安装和部署CenterFusion,我需要根据已有的信息和可能的步骤来整理一个教程。首先,用户提到了参考引用中的内容,涉及DCNv2的编译,这可能和CenterNet相关,而CenterFusion是基于CenterNet的扩展,所以可能步骤类似。 首先,我需要确认系统要求。Ubuntu 18.04或20.04是比较常见的版本,用户之前可能用的是18.04,但可能也支持更新的版本。然后是依赖项,比如Python环境,可能需要Anaconda或者Miniconda来管理。PyTorch的版本也很重要,用户之前的例子用了1.4,但CenterFusion可能需要更高的版本,比如1.7或以上,需要查看官方文档确认。 接下来是获取代码库,用户需要克隆CenterFusion的仓库,可能需要用git clone命令,并且注意是否有子模块需要初始化,比如DCNv2这样的扩展。然后是安装依赖,使用pip安装requirements.txt里的包,可能包括numpy、Cython、pycocotools等。 然后是编译DCNv2,这部分在用户提供的引用里提到了,需要进入相应的目录运行make.sh,可能会有环境变量的问题,比如CUDA_HOME是否正确设置,以及GCC版本是否兼容。如果用户遇到编译错误,可能需要检查这些配置。 接下来是数据准备,需要下载NuScenes数据集,并按照要求放置到指定目录。可能需要运行预处理脚本生成需要的标注文件。 然后是模型训练,用户可能需要下载预训练模型,并修改配置文件中的路径,运行训练命令。这部分需要确保数据集路径正确,以及GPU驱动和CUDA版本兼容。 测试和推理部分,用户可能想用训练好的模型进行测试,生成结果并评估。需要运行相应的脚本,可能还需要安装评估工具。 常见问题方面,编译DCNv2时常见的问题可能包括CUDA版本不匹配、GCC版本过高,需要降级到7或8。数据集路径错误也是一个常见问题,需要检查符号链接是否正确。 最后,需要提醒用户参考官方文档,因为不同版本的依赖可能变化,官方文档会有最新指导。可能还需要注意PyTorch和CUDA的对应版本,比如PyTorch 1.7需要CUDA 11.0等,用户需要根据自己的环境安装合适的版本。 总结下来,步骤大概是:系统准备、环境配置、代码获取、依赖安装、编译DCNv2、数据准备、模型训练与测试。每个步骤都可能遇到问题,需要详细说明解决方法,特别是编译部分和数据准备部分容易出错的地方。&lt;/think&gt;以下是在Ubuntu系统上安装部署CenterFusion的详细教程,包含关键步骤和注意事项: ### 一、系统与环境准备 1. **操作系统要求**:推荐Ubuntu 18.04/20.04 LTS,已确认与CUDA 11.x兼容[^1] 2. **安装基础依赖**: ```bash sudo apt-get install build-essential git cmake libopenblas-dev ``` 3. **配置Python环境**: - 使用Anaconda创建虚拟环境: ```bash conda create -n centerfusion python=3.7 conda activate centerfusion ``` ### 二、代码与依赖安装 1. **获取代码仓库**: ```bash git clone --recursive https://github.com/mrnabati/CenterFusion cd CenterFusion ``` &gt; 注意`--recursive`参数确保同步子模块 2. **安装Python依赖**: ```bash pip install -r requirements.txt pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 -f https://download.pytorch.org/whl/torch_stable.html ``` 3. **编译DCNv2扩展**: ```bash cd src/lib/models/networks/DCNv2 ./make.sh # 需确认CUDA_HOME环境变量已设置 ``` ### 三、数据集配置 1. **下载NuScenes数据集**: - 完整数据集需包含`v1.0-trainval`标注文件 - 创建符号链接: ```bash mkdir data ln -s /path/to/nuscenes data/nuscenes ``` 2. **生成数据预处理文件**: ```bash python tools/create_data.py nuscenes_data_prep --root_path=data/nuscenes ``` ### 四、模型训练与验证 1. **启动训练**: ```bash python main.py --task fusion_3d --dataset nuscenes --exp_id centerfusion ``` 2. **测试推理**: ```bash python test.py --task fusion_3d --dataset nuscenes --exp_id centerfusion --load_model ../models/centerfusion.pth ``` ### 五、常见问题解决 1. **DCNv2编译失败**: - 检查CUDA工具包版本与PyTorch匹配性 - 确认GCC版本&le;8(可通过`conda install gxx_linux-64=8.4.0`降级) 2. **数据集路径错误**: ```bash # 验证数据结构 tree data/nuscenes -L 3 # 应包含samples、sweeps等目录 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值