早上好,
我的任务是编写一个程序来定位MAC地址注册的本地端口,为此我需要SSH和Telnet到Cisco设备并接收命令的输出,以便我可以解析它并决定如何处理这些信息。
到目前为止,由于Renci.SshNET,我有SSH连接和解析没有问题。但我在使用Telnet时遇到问题,我将其设置为使用Telnetlib.dll并且我知道它有效,因为我可以做"显示用户"在交换机上我连接并看到其中一条vty线正被我的应用程序占用。但在应用程序中,我写的所有内容都是应用程序冻结,没有任何按钮工作,当我将鼠标悬停在窗口上时我看不到鼠标,所以我猜测应用程序在运行时不喜欢某些东西。
我在VB.NET中使用的代码是:
Using client As TcpClient = New TcpClient(host, 23)
Dim tel As TelnetStream = New TelnetStream(client.GetStream)
Dim buff(client.ReceiveBufferSize) As Byte
Dim result As String
tel.SetRemoteMode(TelnetOption.Echo, False)
Dim exp As Expector = New Expector(tel)
exp.Expect("username: ")
exp.SendLine(username)
exp.Expect("password: ")
exp.SendLine(password)
exp.Expect(">")
tel.Read(buff, 0, buff.Length)
result = System.Text.Encoding.ASCII.GetString(buff)
MessageBox.Show(result)
End Using
Telnetlib.dll包括Expector,SendLine,Expect和TelnetStream的定义。
我做了一些调试,发现它在执行结果时冻结= System.Text.Encoding.ASCII.GetString(buff) 命令。
感谢您的帮助。