0

我正在编写一些 Python (3.4.2) 脚本来远程登录到我们的旧 VMS 系统以运行一些报告。我们用来访问系统的终端仿真是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 是回声的一部分,返回到终端,而不是来自终端。

发送 LF 通常被 OpenVMS 终端驱动程序解释为“WORD DELETE”。现在在建议用法中没有什么区别,因为下一个输入没有什么要删除的,但仍然如此。

SET HOST 0/LOG 可能有助于显示需要发送和预期返回的字符。

当我使用 SSH 时,我的提示是“登录身份:”/“密码:”,而对于 telnet,“用户名:”/“密码:”我没有看到“您的 ID:”/“密码:”。那应该从哪里来?会话是否已经记录,这是二级用户名/密码?

我从这里去哪里?

你在哪里?到目前为止的输出是什么?成功登录?“选择:”应该来自哪里?程序中的菜单?DCL Login.com ?

祝你好运!海因。

于 2015-06-08T19:35:25.570 回答