You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

RedHat 5 bash环境下:如何自动化从DVD、硬盘分别运行.sh脚本?

嘿,针对你在RHEL 5 bash环境下的自动化需求,我整理了一套完整的方案,能把原本需要手动切换的两个步骤整合起来,让用户操作更顺畅。下面是具体实现:

完整自动化解决方案(RHEL 5 bash环境)

一、整体思路

原本的流程需要用户手动运行第二个脚本,现在我们把两个步骤整合:第一个脚本负责DVD挂载、用户输入名称、创建目标目录,之后自动调用第二个脚本完成文件传输与DVD刻录,全程只需要用户完成必要的交互(输入名称、确认刻录等)。

二、脚本实现与详解

1. 初始化脚本:init_setup.sh(放在DVD根目录)

这个脚本是入口,负责挂载DVD、获取用户输入、创建目录,然后触发后续任务:

#!/bin/bash

# 自定义配置:根据你的环境修改以下参数
DVD_MOUNT="/media/cdrom"       # DVD挂载点(RHEL5默认常用路径)
TARGET_PARENT="/home/backup"   # 硬盘目标目录的父路径

# 检查DVD是否已挂载
if ! mount | grep -q "$DVD_MOUNT"; then
    echo "请插入包含脚本的DVD光盘..."
    read -p "插入完成后按回车键继续..."
    
    # 自动挂载DVD(需要sudo权限,若当前用户非root会提示输入密码)
    if ! sudo mount /dev/cdrom "$DVD_MOUNT"; then
        echo "❌ 挂载DVD失败,请手动挂载后重新运行脚本!"
        exit 1
    fi
    echo "✅ DVD已成功挂载到 $DVD_MOUNT"
fi

# 获取用户输入的目录名称
read -p "请输入目标目录名称:" DIR_NAME

# 验证输入非空
if [ -z "$DIR_NAME" ]; then
    echo "❌ 目录名称不能为空!"
    exit 1
fi

# 创建硬盘目标目录
TARGET_DIR="$TARGET_PARENT/$DIR_NAME"
if mkdir -p "$TARGET_DIR"; then
    echo "✅ 目标目录已创建:$TARGET_DIR"
else
    echo "❌ 创建目录失败,请检查权限或路径!"
    exit 1
fi

# 调用传输与刻录脚本(假设第二个脚本在DVD根目录下)
if [ -f "$DVD_MOUNT/transfer_and_burn.sh" ]; then
    echo "🔄 开始执行文件传输与刻录任务..."
    bash "$DVD_MOUNT/transfer_and_burn.sh" "$TARGET_DIR"
else
    echo "❌ 未找到传输刻录脚本,请检查DVD内容!"
    exit 1
fi

# 可选:任务完成后卸载DVD
read -p "任务完成,是否卸载DVD?(y/n): " UNLOAD_CHOICE
if [[ "$UNLOAD_CHOICE" =~ ^[Yy]$ ]]; then
    sudo umount "$DVD_MOUNT"
    echo "✅ DVD已卸载"
fi

exit 0

2. 传输与刻录脚本:transfer_and_burn.sh(放在DVD根目录)

这个脚本接收初始化脚本传递的目标目录参数,完成SCP传输和自动刻录:

#!/bin/bash

# 检查是否接收到目标目录参数
if [ $# -ne 1 ]; then
    echo "❌ 错误:需要传入目标目录路径作为参数!"
    exit 1
fi

TARGET_DIR="$1"
# 自定义配置:修改为你的远程文件路径
REMOTE_SOURCE="admin@192.168.1.100:/data/backup_files/*"
BURN_DEVICE="/dev/dvd"          # 刻录设备路径(RHEL5默认常用)

# 执行SCP文件传输
echo "🔄 开始从远程服务器传输文件..."
if scp -r "$REMOTE_SOURCE" "$TARGET_DIR/"; then
    echo "✅ 文件传输完成!"
else
    echo "❌ 文件传输失败,请检查网络、权限或远程路径!"
    exit 1
fi

# 确认是否开始刻录
read -p "是否开始刻录数据DVD到设备 $BURN_DEVICE?(y/n): " BURN_CONFIRM
if [[ ! "$BURN_CONFIRM" =~ ^[Yy]$ ]]; then
    echo "🔴 已取消刻录任务"
    exit 0
fi

# 使用growisofs刻录数据DVD(需提前安装dvd+rw-tools)
echo "🔄 开始刻录DVD,请不要中断..."
if growisofs -dvd-compat -Z "$BURN_DEVICE" -R -J "$TARGET_DIR/"; then
    echo "✅ DVD刻录成功!"
else
    echo "❌ DVD刻录失败,请检查光盘、设备或权限!"
    exit 1
fi

exit 0

三、使用前准备与注意事项

  • 给两个脚本添加执行权限:在DVD目录下运行 chmod +x init_setup.sh transfer_and_burn.sh
  • 安装刻录工具:RHEL5默认没有growisofs,需要提前执行 sudo yum install dvd+rw-tools
  • 运行脚本:用户插入DVD后,挂载(或让脚本自动挂载),然后执行 sudo bash /media/cdrom/init_setup.sh(需要sudo权限完成挂载、刻录操作)
  • 自定义参数:务必根据你的实际环境修改脚本中的挂载点、远程文件路径、刻录设备等配置项

内容的提问来源于stack exchange,提问作者MechHed

火山引擎 最新活动