0

レポートを実行するために、従来の VMS システムに telnet で接続するための Python (3.4.2) スクリプトをいくつか作成しています。システムへのアクセスに使用する端末エミュレーションは VT320 です。

スクリプトで TDD を使用して、先に進む前に適切なメニューにいることを確認したいと考えています。

以下は私のスクリプトの始まりです。組み込む方法がわかりません:
test1 に合格した場合は step1 を
実行し、test2 が合格した場合は step2 を実行します

リモート システム内の自分の位置を確認するために、TDD を Python Telnet スクリプトに組み込んだ人はいますか?

ここからどこへ行けばいいですか?

import unittest
import re
import telnetlib
timeout = 120
dataqueue = ""
f = open('datafile.txt', 'w')

class ConnectionTest(unittest.TestCase):
    def test_connection_to_Legacy_System(self):
        a = "---Test---"
        self.assertIsNone(a)
if __name__ == "__main__":
    unittest.main()

tn = telnetlib.Telnet(HOST,23,timeout)
tn.read_until(b"YOUR ID:")
tn.write(str.encode(user + "\r\n"))
tn.read_until(b"PASSWORD:")
tn.write(str.encode(password + "\r\n"))
tn.read_until(b"Selection: ")
tn.write("1\r\n")
dataqueue = tn.read_very_eager()
dataqueue = dataqueue.decode('ascii')

tn.close()
f.write(dataqueue)
f.close()
4

1 に答える 1

0

(Python や TDD について) 何も知りませんが、チェックしたい要素がいくつかあります。

\r は ASCII 値 13 = CR = 改行 \n は ASCII 値 10 = LF = LineFeed ですよね?

「Enter」がタイプの場合、CR のみが送信されます。LF は、端末からではなく端末に戻るエコーの一部です。

通常、LF の送信は、OpenVMS ターミナル ドライバによって "WORD DELETE" として解釈されます。次の入力のために削除するものがないため、違いはありませんが、それでも使用方法を提案します。

SET HOST 0/LOG は、送信する必要があり、返されると予想される文字を表示するのに役立つ場合があります。

SSH を使用すると、プロンプトは「login as:」/「password:」になり、telnet の場合は「Username:」/「Password:」「YOUR ID:」/「PASSWORD:」が表示されません。それはどこから来るのでしょうか?セッションはすでにログに記録されており、これは第 2 レベルのユーザー名/パスワードですか?

ここからどこへ行けばいいですか?

どこにいるの?これまでのアウトプットは?ログインに成功しましたか? 「Selection:」はどこから来るのですか? 番組のメニュー?DCL Login.com ?

幸運を!ハイン。

于 2015-06-08T19:35:25.570 に答える