我正在使用 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 的答案