簡體   English   中英

通過在Python 3.0中使用Telnet打印Ascii文本

[英]Printing Ascii Text from using Telnet in Python 3.0

因此,在發出“幫助”命令后,我無法實際打印我看到的所有信息。 我是否需要更改skt.receive()的長度? 還是有一種方法可以簡單地打印所有通過的數據? 似乎必須要有一種方法來考慮要打印未知長度的數據? 還是我以錯誤的方式來處理這個問題。 謝謝。

#!/usr/bin/python

host = '192.168.1.50'
port = 23
msg = "help\r"
msg2 = "y\r"


import socket
import sys
import time

try:
    skt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, e:
    print("Error creating socket: %s" % e)
    sys.exit(1)

try:
    skt.connect((host,port))
except socket.gaierror, e:
    print("Address-related error connecting to server: %s" % e)
    sys.exit(1)
except socket.error, e:
    print("Error connecting to socket: %s" % e)
    time.sleep(15)
    skt.connect((host,port))
    sys.exit(1)

try:
    print(skt.send(msg))
    skt.send('help\r')
    print("SEND: %s" % msg) 
except socket.error, e:
    print("Error sending data: %s" % e)
    sys.exit(1)

while 1:
    try:
        buf = skt.recv(50000000000)
        if(len(buf)):
            print(buf)
            if 'AMX' in buf:
                print("Length buff")
                if 'AMX' in buf:
                    print(skt.send(msg))
                    #print("first wait")
                    #print("RECV: %s" % buf)
                    #time.sleep(9)
                    #print("second wait")
                    sys.exit(1)

    except socket.error, e:
        print("Error receiving data: %s" % e)
        sys.exit(1)
    if not len(buf):
        break
    sys.stdout.write(buf)

您是否考慮過使用telnetlib ,而不是重新發明輪子? :)

例:

import telnetlib

HOST = "192.168.1.50"

tn = telnetlib.Telnet(HOST)
tn.write("help\n")
print tn.read_all()

因此,telnetlib def使事情變得更容易並簡化了流程。 重新發明輪子沒有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM