有没有python grub.cfg解析器?

时间:2012-02-12 11:31:38

标签: python parsing grub

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

我正试图通过设备分区(root)来获取“menuentry”,例如

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,Linux 3.0.0-15-generic','(hd0,msdos1)'),('Ubuntu,   使用Linux 3.0.0-15-generic(恢复模式)','(hd0,msdos1)'),   ('Ubuntu,Linux 3.0.0-14-generic','(hd0,msdos1)'),('Ubuntu,   使用Linux 3.0.0-14-generic(恢复模式)','(hd0,msdos1)'),   ('Ubuntu,Linux 3.0.0-13-generic','(hd0,msdos1)'),('Ubuntu,   使用Linux 3.0.0-13-generic(恢复模式)','(hd0,msdos1)'),   ('Ubuntu,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)')]

1 个答案:

答案 0 :(得分:2)

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

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

请查看以menuentry开头的行,解析该行的名称,然后扫描到} set root=的下一行。