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




