【发布时间】:2019-11-04 16:17:54
【问题描述】:
我想:
- 使用 VBA 作为 TCP/IP 客户端连接到某些计算机。
- 向它发送命令 - 说“帮助”+ vbcrlf
- 将回复捕获到剪贴板或文件中,然后我可以将两者都粘贴到工作表中
- 这部分真的让我很困惑 - 使用 .run 和 .exec,我无法弄清楚如何发送“帮助”+回车。我可以打开 shell 窗口,但无法让 StdIn 向 plink.exe 发送命令。
我还没走远:
Sub Test1()
Const TARGET_HOST = "192.168.0.2 -P 24" ' Some proprietary telnet port
Const PLINKPATH = "C:\program files\putty\plink.exe"
Set sh = CreateObject("WScript.Shell")
cmd = """C:\program files\putty\plink.exe"" -telnet " & TARGET_HOST
sh.Run cmd & " | clip", 1, True
End Sub
如果这种方法不是向plink.exe发送命令的正确方法,还有什么其他方法可以不用使用winsock方法,这很难维持下去。
【问题讨论】:
-
难道没有可以发送到服务器关闭会话的命令吗?喜欢
exit? -
我认为只有当您从 cmd 使用 telnet 时退出才有效。无论如何,这只是我想做的一大堆其他事情的起点——我无法超越这一点真的很令人沮丧。我已经花了几个小时研究这个 - 我已经看到了一个关于如何从 cmd 捕获回复的好例子 - 例如 ipconfig,但我似乎无法让它与 plink 一起使用。
-
“我认为只有在您从 cmd 使用 telnet 时退出才有效” - 您为什么这么认为?为什么
exit在您的代码中表现不同? + 我不明白你的其余评论。到目前为止,您告诉我们的唯一问题是关闭隐藏的 Plink 实例的连接。 -
如何发送退出命令?在上面的示例中 - 我得到的只是一个 cmd 窗口,显示我已成功连接到任何设备。我不知道如何(1)向该外壳发送命令,(2)关闭窗口。你如何发送“退出”? sh.Run "exit" 不起作用 - 手动输入单词 exit 也不起作用,因为打开的 shell 窗口现在是与设备的连接。如果我转到 shell 窗口,然后键入 exit - 那只会返回错误,因为其他设备不支持命令退出。
-
我应该澄清这不是到另一台 PC 的正常 telnet 连接 - 这是与任何支持 tcp 连接的产品的 tcp 客户端会话。我希望制作一个 Excel 表格,我可以在其中指定端口号以及要在表格本身上发送的命令。