首先,如果我的标题不正确,我很抱歉,但我不想让它太“混乱”。
我正在创建一个 bash 脚本,用于安装基于 CentOS 6 和 CentOS 7 的各种服务器,这些服务器具有硬件 RAID 和软件 RAID 1。到目前为止,我做得还不错。CentOS 6(硬件 RAID 和软件 RAID 1)已完全完成。
但是,我现在在通过已安装软件 RAID 1 的 kickstart 文件重新安装 CentOS 7 时遇到了问题。对于预安装的硬件 RAID,这不是问题,因为我可以在脚本中使用“set root='hd0,gpt2'”。
我认为我需要使用(在具有软件 RAID 1 的 CentOS 7 上)“set root='mduuid/950f53e3b96cf5bbde74b5665f8d124c'”选项,对吗(第一个问题)?
因此我在服务器上尝试了以下操作(抱歉,我不是一个干净的代码编写者):
tmpraid=$(cat grub.cfg | grep -e 'set root=' | head -1)
tmpraid2="${tmpraid::-1}"
tmpraid3=${tmpraid2//set root=\'/}
这会在测试服务器上产生以下输出:mduuid/950f53e3b96cf5bbde74b5665f8d124c
但是当我在脚本中使用它时,如下所示:
ssh [email protected] "tmpraid=$(cat /boot/grub2/grub.cfg | grep -e 'set root=' | head -1)"
ssh [email protected] "tmpraid2="${tmpraid::-1}""
ssh [email protected] "tmpraid3=${tmpraid2//set root=\'/}"
它将输出:cat: /boot/grub2/grub.cfg: 没有此文件或目录
我猜测它试图在当前服务器而不是目标服务器上运行该命令?
现在谈谈我的问题。
- 使用“mduuid”行通过 GRUB2 启动 kickstart 是否正确?或者还有其他方法吗?
- 为什么 bash 中显示“没有这样的文件或目录”?
- 也许有更好/更干净的方法从目标服务器获取“mduuid”行?
我希望解释得足够详细,以便获得一些帮助或建议。如果没有,请随时询问我。提前谢谢您。
//编辑
好吧,我设法让脚本运行起来了。在进行了大量搜索和实验后,不得不做出一些更改。也许有更简单的方法来实现这个启动,但如果没有人解释,我会尝试这个。
ssh root@$nodeIP "wget http://192.50.100.200/files/getgrub -O /root/getgrub"
ssh root@$nodeIP "chmod +x /root/getgrub"
ssh root@$nodeIP "sh /root/getgrub"
getgrub=$(ssh root@$nodeIP "sh /root/getgrub")
结果最终存储在 getgrub 中。所以我可以对此进行实验。