如何检查脚本中使用了哪些安装介质

如何检查脚本中使用了哪些安装介质

我正在使用 AutoYast 安装 SUSE 11 SP4。在 autoyast 控制文件内部,您可以在多个阶段编写脚本。

我的脚本在<post-scripts>舞台上运行,如下所示:

mkdir /media/usb
echo "Mounting USB to /media/usb"
mount /dev/sdb1 /media/usb
echo "Copying Contents to /root/LINUX_DVD/"
mkdir /root/LINUX_DVD/
cp -aR /media/usb/. /root/LINUX_DVD/
if [ $? -eq 0 ]
then
    echo "Copy: OK"
    cd /root/LINUX_DVD/seconet/setup/
    sed -e "s/passwd service/echo -e '******' | passwd --stdin service/" install.sh > install_tmp.sh
    mv install_tmp.sh install.sh
    chmod +x install.sh
    echo "After confirmation system will finish configuration and reboot."
    echo "After the reboot the Installation script will automatically execute."
else
    echo "Copy: Failed"
    echo "Copying DVD and installing VCIP must be done manually after reboot."
    exit
fi

由于有两种可能的安装介质(DVD 和 USB),我想找到一种方法来检查此脚本中的情况,因为如您所见,我正在复制内容。

在安装过程的这个阶段,没有安装介质,这意味着我还必须安装安装介质。

起初,我想我只是检查安装是否成功,如果没有,我会尝试其他媒体,但想知道是否可以查看其中是否/dev/*有内容,如果是,则安装正确的媒体那里。

是否可以检查设备中是否/dev/有内容?

这种方法实用吗?

我现在是这样解决的:

mkdir /media/install
mount /dev/sdb1 /media/install
if [ $? -ne 0 ]
then
    echo "USB not found, trying DVD"
    mount /dev/sr0 /media/install
    EXITCODE=$?
    if [ $EXITCODE -ne 0 ]
    then
        echo "No correct installation media found";
        exit $EXITCODE;
    else
        echo "Mounted DVD"
    fi
else
    echo "Mounted USB"
fi
echo "Copying Contents to /root/LINUX_DVD/"
mkdir /root/LINUX_DVD/
cp -aR /media/install/. /root/LINUX_DVD/
... rest of the script ...

答案1

看起来你正在混合东西。

“有内容”是什么意思?

如果它是“上面有数据”,那么您必须安装。

但是,如果您的意思是“存在”或“后面有一个真正的媒体”(因为 /dev/ 条目并不承认后面有一个真正的设备),那么您可以 grep /proc/partitions for /dev/sdb1 或使用“lsblk / dev/sdb”(并在回复中再次 grep 查找 sdb1)

if grep "sdb1" /proc/partitions ; then
    echo sdb1 exists
fi

sr0 的问题是,即使 CD/DVD 驱动器中没有磁盘,它也会存在(驱动器存在,因此内核没有说谎)。

这个问题,看起来“blkid /dev/sr0”应该为您提供 /dev/sr0 的答案

相关内容