有没有python grub.cfg解析器



有人知道grub2的grub.cfg文件的python解析器吗?

我正在尝试按设备分区(根)获取"菜单项",例如

hd0,msdos1: ['Ubuntu, with Linux 3.0.0-15-generic',
            'Ubuntu, with Linux 3.0.0-15-generic (recovery mode)',
            'Ubuntu, with Linux 3.0.0-14-generic']
hd2,msdos1: ["Windows 7 (on /dev/sdc1)"]

等等。

解决方案:

re.findall("menuentry ['"](.*?)['"].*?set root='(.*?)'", x, re.S)

[('Ubuntu,with Linux 3.0.0-15-generic','(hd0,msdos1)'),('Ubuntu,使用Linux 3.0.0-15-generic(恢复模式)','(hd0,msdos1)'),('Ubuntu,with Linux 3.0.0-14-generic','(hd0,msdos1)'),('Ubuntu,使用Linux 3.0.0-14-generic(恢复模式)','(hd0,msdos1)'),('Ubuntu,with Linux 3.0.0-13-generic','(hd0,msdos1)'),('Ubuntu,使用Linux 3.0.0-13-generic(恢复模式)','(hd0,msdos1)'),('Ubuntu,with Linux 3.0.0-12-generic','(hd0,msdos1)'),('Ubuntu,使用Linux 3.0.0-12-generic(恢复模式)','(hd0,msdos1)'),('内存测试(memtest86+)','(hd0,msdos1)'),('内存检测(memtest86+,串行控制台115200)','(hd0,msdos1)'),('Windows 7(在/dev/sdc1上)','(hd2,msdos1)')]

我不知道grub.cfg的Python解析器,但您不需要解析整个文件来获取这些信息。这是您要查找的数据的格式:

menuentry "<name>" [options] {
  ...
  set root='<root>'
  ...
}

因此,查找以menuentry开头的行,解析该行的名称,并扫描到下一行,其中}代表set root=

我认为您可以尝试解析器augeas libdiffusion Devicetree

相关内容

  • 没有找到相关文章

最新更新