Python脚本打开新的VTY行。我不想这样

2024-06-24 13:49:39 发布

您现在位置:Python中文网/ 问答频道 /正文

背景

我编写了一个简单的菜单系统,用于动态创建kickstart脚本,Anaconda将在部署基于Linux的应用程序框架时使用这些脚本。工具:python2.7.14、npyscreen、jinja2

我在开发过程中使用了Vagrant进行快速测试。我所有的测试用例都通过了a-ok,菜单也很好地退出了。你知道吗

发行

当我将菜单添加到一个*.sh文件中以构建一个自定义ISO时,它会很好地打开菜单系统。我可以按预期使用它。输入完数据后,我在主屏幕上单击“ok”,它将清除菜单、生成数据并继续部署。你知道吗

单击“确定”时,菜单不会清除屏幕。不过,部署确实会在后台继续进行。切换到第一个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)

Tags: pyself系统部署defexit菜单ok