按下Ctrl + C时,Python telnetlib杀死顶层

时间:2019-02-05 17:11:28

标签: python python-3.x telnetlib

我正在尝试编写一个脚本,该脚本将运行top命令,记录输出,然后在我按Ctrl + C时-它会向telnet发送“ q”以停止top命令,关闭telnet并完成操作。

我尝试发送Ctrl + C(\ x03或使用telnetobj.sock.sendall(telnetlib.IAC + telnetlib.BRK)并发出lib信号

相关代码:

tn = telnetlib.Telnet(telnetIP, telnetPort)
print("telnet connected")
try:
    tn.write(b'top -d 1\n')
    while True:
        out = tn.read_until(b'asdfwefsa', 1)
        f = open(OUTPUT, 'a')
        f.write(out.decode("utf-8"))
        f.close() #after this i have tried sending 'q' and it did kill top
except KeyboardInterrupt:
    tn.write(b'q\n') #here i also tried telnetobj.sock.sendall(telnetlib.IAC + telnetlib.BRK) and writing b'\x03'
    tn.close()
    print("telnet closed")

并且它确实退出了telnet(至少它打印出“ telnet已关闭”),但是top命令仍然处于活动状态。当我尝试写

tn.write('q\n')

在while循环内,关闭文件后-它会退出顶部,然后在telnet连接的循环中继续发送“ q”垃圾邮件。 因此,发送'q'本身是可行的,但是在除语句之外的某种程度上它是行不通的...

有什么想法吗?

谢谢

0 个答案:

没有答案