0

Python (純粋なPythonのみ) で telnet 自動化を実行しようとしています。関数 で読み取りの一部を出力しようとするとread_until、一連の が表示bsされます。これbsは、backspace文字のように であり、他のものではありません。:-)

tnon 、Telnetクラスのインスタンスで変更できる設定があるかどうか、またはこれを修正できるかどうかは誰にもわかりますか? それとも、これは私のホストが吐き返しているものですか? 私はtelnetlibライブラリでいくつかのグーグルを実行しましたが、人々がTelnet.read_until関数から出力した例はあまり見たことがありません.

これは私のコードの縮小版です:

import getpass
import sys
import telnetlib

HOST = "blahblah"

def writeline(data):
    local.write(data + '\n')

def read_until(tn, cue, timeout=2):
    print 'Before read until "%s"' % cue
    print tn.read_until(cue, timeout)
    print 'After read until "%s"' % cue

def tn_write(tn, text, msg=''):
    if not msg:
        msg = text
    print 'Before writing "%s"' % msg
    tn.write(text)
    print 'After writing "%s"' % msg    


user = 'me'
password = getpass.getpass()

tn = telnetlib.Telnet(HOST)

read_until(tn, "Username: ")
tn_write(tn, user + "\n", user)

if password:
    read_until(tn, "Password: ")
    tn_write(tn, password + "\n", 'password')

read_until(tn, "continue")
tn_write(tn, "\n", '<Enter>')

#tn.write("vt100\n")

tn_write(tn, 'main_menu' + '\n', 'start menu')
read_until(tn, 'Selection: ')

関係ないと思いますが、私は Windows で Python 2.7 を使用しています。

4

1 に答える 1

1

ここで問題がわかりました。両方を組み合わせてコマンドを書いてみましたが、両方を組み合わせたものでは\nありませんでした。\rに変更すると'\r\n'、期待どおりの出力が得られました。

于 2012-10-11T15:59:17.340 に答える