任务一:将之前练习过的命令做出一个shell脚本一键运行(三台同理)

1.创建脚本文件

1.1用vim直接创建并编辑
vim shell.sh
    1.2编写脚本内容
    #!/bin/bash
    set -e
    
    # 配置参数
    NETWORK_CARD="ens33"
    GATEWAY="192.168.88.2"
    DNS1="8.8.8.8"
    BASE_IP_PREFIX="192.168.88.10"
    TOTAL_NODES=3
    HADOOP_PASS="123456"
    
    # 检查root权限
    [ "$(id -u)" -ne 0 ] && echo "Please run with sudo" && exit 1
    
    # 检查参数
    [ -z "$1" ] && echo "Usage: $0 <node number 1-3>" && exit 1
    
    NODE_NUM=$1
    HOSTNAME="node${NODE_NUM}"
    IP_ADDR="${BASE_IP_PREFIX}${NODE_NUM}"
    
    # 验证节点编号范围
    [ "$NODE_NUM" -lt 1 ] || [ "$NODE_NUM" -gt "$TOTAL_NODES" ] && echo "Number out of range" && exit 1
    
    echo "======================================"
    echo "Start configuring $HOSTNAME ($IP_ADDR)"
    echo "======================================"
    
    # 设置主机名
    echo "1. Setting hostname to $HOSTNAME..."
    hostnamectl set-hostname "$HOSTNAME"
    echo "127.0.0.1 $HOSTNAME localhost" >>/etc/hosts
    
    # 配置网络
    echo "2. Configuring network interface $NETWORK_CARD..."
    DEV=$NETWORK_CARD
    nmcli con delete "$DEV" 2>/dev/null || true
    nmcli con add type ethernet ifname "$DEV" con-name "$DEV" ip4 "$IP_ADDR/24" gw4 "$GATEWAY" ipv4.dns "$DNS1" ipv4.method manual
    nmcli con up "$DEV"
    
    # 关闭防火墙和SELinux
    echo "3. Disabling firewall and SELinux..."
    systemctl disable --now firewalld
    sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
    
    # 创建hadoop用户
    echo "4. Creating hadoop user..."
    id hadoop &>/dev/null || (useradd hadoop && echo "$HADOOP_PASS" | passwd --stdin hadoop)
    
    # 配置SSH密钥
    echo "5. Configuring SSH keys..."
    [ ! -f /root/.ssh/id_rsa ] && ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
    cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
    chmod 600 /root/.ssh/authorized_keys
    
    echo "======================================"
    echo "$HOSTNAME configuration completed!"
    echo "IP Address: $IP_ADDR"
    echo "Hostname: $HOSTNAME"
    echo "Please reboot the system to apply all changes."
    echo "======================================"
    1.3保存脚本
    1.4赋予脚本执行权限
    chmod +x shell.sh
    1.5运行
    sudo ./shell.sh 1/2/3
    1.6结果输出

    1.7重启
    sudo reboot

    任务二:建多台VM

    详见0924

    任务三:在任务2的多台VM上跟任务1一样操作,然后测试免密登录

    详见0917

    Logo

    码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

    更多推荐