Python和Termlib:如何删除后面的行tn.写入('wrongstring')?

2024-10-01 22:33:51 发布

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

我想模拟用户与远程终端的交互 从终端仿真器中删除行的捷径是Ctrl+U。你知道吗

假设telnet会话已启动:

HOST='1.1.1.1'
tn = telnetlib.Telnet(HOST)
tn.write('wrongstring')

现在我需要删除这一行。我该怎么做?如何通过发送Ctrl+U到终端写什么?你知道吗

编辑:这就成功了

tn.write('\x15')

不知道为什么下面建议的ASCII序列不起作用。你知道吗


Tags: 用户终端host编辑远程建议telnettn
1条回答
网友
1楼 · 发布于 2024-10-01 22:33:51

除非您向远程shell解释器提供输入,否则发送controlU将无济于事。你知道吗

如果您正在写入接受“ANSI escapes”的终端,它可能知道如何删除当前行。参考XTerm Control Sequences

CSI Ps K  Erase in Line (EL).
            Ps = 0  -> Erase to Right (default).
            Ps = 1  -> Erase to Left.
            Ps = 2  -> Erase All.

你可以通过写"\033[2K"来删除整行。不会移动光标。也可以将光标移到左边距(在许多终端上)

CSI Ps G  Cursor Character Absolute  [column] (default = [row,1]) (CHA).

通过写"\033[G"。最后,如果必须删除前面的行,则可以使用CPLVPA控制序列向上移动光标(这些控制序列的实现不太广泛)。你知道吗

相关问题 更多 >

    热门问题