【问题标题】:Console session terminates while trying to terminate script控制台会话在尝试终止脚本时终止
【发布时间】:2015-07-01 17:01:58
【问题描述】:

我正在尝试编写一个 Python 代码来检查网络交换机上的网络设置。预计会出现错误,我已包含“exit.sys()”命令,以防出现错误或不匹配的数据。但是,虽然我希望它终止并在脚本中引发异常,但它也会终止 CLI 会话 (Putty)。能够引发异常并仅终止在交换机上运行的脚本而不终止 Putty 的最佳命令是什么?

if isc_port.endswith('g'):
    isc_port = isc_port[:-1]
elif isc_port.endswith('G'):
    sys.exit("The ISC port is also configured as an MLAG port. Please correct.")
    #return ELM

【问题讨论】:

    标签: python exception putty


    【解决方案1】:

    调用sys.exit() 只会退出(python)进程。它不会(直接)影响 putty 或任何其他终端(xterm、gnome-terminal 等)。

    PuTTY 在它所拥有的连接被远程服务关闭时终止。通常,例如使用 ssh 或 telnet,当通过登录运行的程序终止时会发生这种情况。通常程序是一个shell(例如/bin/sh、/bin/bash 等),它在交互运行时不会终止,直到您键入'exit'(或发送EOF,通常是Ctrl-D)。当 shell 以非交互方式运行时,它通常会在它运行的命令终止时终止。

    也许您在登录时正在使用您的 python 程序作为 shell?在这种情况下,当您不想退出时,请不要退出。也许您有一个 shell 脚本运行您的程序,然后在您登录时退出?如果是这样,请将该脚本更改为不退出。

    另外,我经常看到 PuTTY 保持窗口打开,所以所有输出仍然可见,直到您确认网络连接丢失的通知。这是我看到的 Windows DOS/cmd.exe 窗口,它在运行的程序终止后立即关闭。

    【讨论】:

    • 好的,这是我看到的问题。当我只使用 sys.exit() 命令创建一个非常基本的脚本时,它不会杀死 PuTTY(我的坏消息,传闻),但它确实让我退出了网络交换机上的控制台会话,需要我重新登录进入开关。希望看到它只是返回命令提示符而不重新登录。
    猜你喜欢
    • 2022-12-13
    • 2021-11-23
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2014-04-11
    • 2017-07-09
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多