我正在尝试编写一个脚本,该脚本将运行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'本身是可行的,但是在除语句之外的某种程度上它是行不通的...
有什么想法吗?
谢谢