本文目录导读:

我来为你提供几种自动挂载ISO镜像的脚本方案:
基础自动挂载脚本
#!/bin/bash
# 自动挂载ISO镜像脚本
# 配置变量
ISO_PATH="/path/to/your.iso" # ISO文件路径
MOUNT_POINT="/mnt/iso" # 挂载点
# 检查是否为root用户
if [ "$EUID" -ne 0 ]; then
echo "请使用root权限运行此脚本"
exit 1
fi
# 创建挂载点目录
if [ ! -d "$MOUNT_POINT" ]; then
mkdir -p "$MOUNT_POINT"
echo "创建挂载点: $MOUNT_POINT"
fi
# 检查ISO文件是否存在
if [ ! -f "$ISO_PATH" ]; then
echo "错误: ISO文件不存在: $ISO_PATH"
exit 1
fi
# 检查是否已经挂载
if mount | grep -q "$MOUNT_POINT"; then
echo "ISO已经挂载到 $MOUNT_POINT"
exit 0
fi
# 挂载ISO
mount -o loop "$ISO_PATH" "$MOUNT_POINT"
# 检查挂载是否成功
if [ $? -eq 0 ]; then
echo "成功挂载ISO到: $MOUNT_POINT"
else
echo "挂载失败"
exit 1
fi
带卸载功能的脚本
#!/bin/bash
# ISO镜像挂载/卸载管理器
usage() {
echo "使用方法: $0 {mount|umount|status} [iso_path] [mount_point]"
echo " mount - 挂载ISO"
echo " umount - 卸载ISO"
echo " status - 查看挂载状态"
exit 1
}
# 默认配置
ISO_PATH="${2:-/path/to/default.iso}"
MOUNT_POINT="${3:-/mnt/iso}"
check_root() {
if [ "$EUID" -ne 0 ]; then
echo "请使用root权限运行此脚本"
exit 1
fi
}
mount_iso() {
check_root
# 创建挂载点
if [ ! -d "$MOUNT_POINT" ]; then
mkdir -p "$MOUNT_POINT"
fi
# 检查是否已挂载
if mount | grep -q "$MOUNT_POINT"; then
echo "警告: $MOUNT_POINT 已经挂载"
mount | grep "$MOUNT_POINT"
exit 0
fi
# 检查ISO文件
if [ ! -f "$ISO_PATH" ]; then
echo "错误: ISO文件不存在: $ISO_PATH"
exit 1
fi
# 挂载ISO
echo "正在挂载 $ISO_PATH 到 $MOUNT_POINT..."
mount -o loop,ro "$ISO_PATH" "$MOUNT_POINT"
if [ $? -eq 0 ]; then
echo "挂载成功!"
df -h "$MOUNT_POINT"
else
echo "挂载失败!"
exit 1
fi
}
umount_iso() {
check_root
if [ ! -d "$MOUNT_POINT" ]; then
echo "挂载点不存在: $MOUNT_POINT"
exit 1
fi
echo "正在卸载 $MOUNT_POINT..."
umount "$MOUNT_POINT"
if [ $? -eq 0 ]; then
echo "卸载成功!"
rmdir "$MOUNT_POINT" 2>/dev/null || true
else
echo "卸载失败,可能正在使用中"
fuser -km "$MOUNT_POINT" 2>/dev/null
sleep 2
umount "$MOUNT_POINT" && echo "强制卸载成功" || echo "卸载失败"
fi
}
status_iso() {
echo "=== ISO挂载状态 ==="
mount | grep -E "\.iso|loop" || echo "没有已挂载的ISO镜像"
echo "=================="
}
# 主程序
case "$1" in
mount)
mount_iso
;;
umount)
umount_iso
;;
status)
status_iso
;;
*)
usage
;;
esac
批量挂载多个ISO的脚本
#!/bin/bash
# 批量挂载ISO镜像脚本
ISO_DIR="/path/to/iso/directory" # ISO文件存放目录
BASE_MOUNT="/mnt" # 基础挂载路径
check_root() {
if [ "$EUID" -ne 0 ]; then
echo "请使用root权限运行此脚本"
exit 1
fi
}
# 获取ISO文件列表
get_iso_files() {
find "$ISO_DIR" -name "*.iso" -type f 2>/dev/null | sort
}
# 挂载单个ISO
mount_single_iso() {
local iso_file="$1"
local iso_name=$(basename "$iso_file" .iso)
local mount_point="${BASE_MOUNT}/${iso_name}"
# 创建挂载点
mkdir -p "$mount_point"
# 检查是否已挂载
if mount | grep -q "$mount_point"; then
echo "已挂载: $iso_name"
return 0
fi
echo "正在挂载: $iso_name"
mount -o loop,ro "$iso_file" "$mount_point"
if [ $? -eq 0 ]; then
echo "成功挂载 $iso_name -> $mount_point"
else
echo "挂载失败: $iso_name"
rmdir "$mount_point" 2>/dev/null
return 1
fi
}
# 卸载所有ISO
umount_all_iso() {
echo "正在卸载所有ISO镜像..."
mount | grep "$BASE_MOUNT" | while read line; do
local mount_point=$(echo "$line" | awk '{print $3}')
echo "卸载: $mount_point"
umount "$mount_point" 2>/dev/null || {
fuser -km "$mount_point" 2>/dev/null
sleep 1
umount "$mount_point" 2>/dev/null || echo "无法卸载: $mount_point"
}
rmdir "$mount_point" 2>/dev/null
done
echo "卸载完成"
}
# 主程序
check_root
echo "=== ISO批量挂载工具 ==="
# 查找ISO文件
iso_files=($(get_iso_files))
iso_count=${#iso_files[@]}
if [ $iso_count -eq 0 ]; then
echo "在 $ISO_DIR 中未找到ISO文件"
exit 1
fi
echo "找到 $iso_count 个ISO文件"
# 显示选项
echo "请选择操作:"
echo "1) 挂载所有ISO"
echo "2) 卸载所有ISO"
echo "3) 查看挂载状态"
echo "4) 退出"
read -p "输入选项 (1-4): " choice
case $choice in
1)
echo "开始挂载所有ISO..."
for iso in "${iso_files[@]}"; do
mount_single_iso "$iso"
done
echo "挂载完成!"
;;
2)
umount_all_iso
;;
3)
echo "=== 挂载状态 ==="
mount | grep "$BASE_MOUNT" || echo "没有已挂载的ISO"
;;
4)
exit 0
;;
*)
echo "无效选项"
;;
esac
自动挂载fstab配置(持久化)
如果你想在系统启动时自动挂载ISO,可以添加到fstab:
# 创建挂载点 sudo mkdir -p /mnt/iso # 添加到 /etc/fstab(需要root权限) echo "/path/to/your.iso /mnt/iso iso9660 loop,ro,auto 0 0" | sudo tee -a /etc/fstab # 测试挂载 sudo mount -a
systemd服务自动挂载
#!/bin/bash # 创建systemd服务脚本 cat << 'EOF' | sudo tee /etc/systemd/system/iso-mount.service [Unit] Description=ISO Image Auto Mount Service After=network.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/local/bin/mount-iso.sh mount ExecStop=/usr/local/bin/mount-iso.sh umount [Install] WantedBy=multi-user.target EOF # 启用服务 sudo systemctl daemon-reload sudo systemctl enable iso-mount.service sudo systemctl start iso-mount.service
使用说明
- 保存脚本:将脚本保存为
mount-iso.sh - 添加执行权限:
chmod +x mount-iso.sh - 修改配置:根据实际情况修改ISO路径和挂载点
- 运行脚本:
- 基础版:
./mount-iso.sh - 管理版:
./mount-iso.sh mount或./mount-iso.sh umount
- 基础版:
注意事项
- 需要root权限运行
- ISO文件路径需要使用绝对路径
- 挂载点目录需要存在或脚本会自动创建
- 卸载前确保没有程序在使用挂载目录中的文件
选择适合你需求的脚本版本即可。