Python脚本打开了新的VTY行。不需要这种行为

时间:2018-06-21 15:30:02

标签: python bash shell

背景

我编写了一个简单的菜单系统,用于动态创建Anaconda在基于Linux的应用程序框架的部署期间将利用的kickstart脚本。工具:Python 2.7.14,npyscreen,jinja2

我在开发过程中使用了Vagrant进行快速测试。我所有的测试用例都通过测试,菜单退出就可以了。

问题

当我将菜单添加到* .sh文件中以构建自定义ISO时,它会很好地显示菜单系统。我能够按预期使用它。输入完数据后,我在主屏幕上单击“确定”,这应该清除菜单,生成数据并继续进行部署。

单击“确定”时,菜单不会清除屏幕。但是,部署确实会在后台继续进行。切换到第一条VTY行(ctrl + alt + F1),向我显示预期的输出。

我的问题

我不确定哪方面可以解决。与第一行相比,似乎正在使用新的VTY行,因此用户无需按ctrl + alt + F1即可更改VTY行。

相关代码段

<*.sh || OMITTED CONFIG>

mkdir -p $ISOLINUXDIR/EXTRAS/kickstart-menu
cp -r ../kickstart-menu/{classes.py,jinja2,kickstart.py,kickstarts,markupsafe,menu.py,npyscreen} $ISOLINUXDIR/EXTRAS/kickstart-menu
cp -r ../kickstart-menu/kickstarts/* $ISOLINUXDIR/ks

</OMITTED CONFIG>

然后...

# Some code omitted

class MainForm(npyscreen.ActionFormMinimal):
    # Home Screen

    def create(self):
        self.name = "MyApp!"
        self.add(MainMenuWidget)

    def on_ok(self):
        self.editing = False
        self.parentApp.setNextForm(None)

    def exit_application(self):
        self.editing = False
        self.parentApp.setNextForm(None)

if __name__ == '__main__':
    try:
        KICKSTART_MENU = menuSystem()
        KICKSTART_MENU.run()
        ksCreator(KICKSTART_MENU)

        sys.exit(0)
    except KeyboardInterrupt:
        logData(KICKSTART_MENU)
        sys.exit(0)

0 个答案:

没有答案