【问题标题】:VBA telnet using plink (Putty's commandline) - send command to plink.exe使用 plink(Putty 命令行)的 VBA telnet - 将命令发送到 plink.exe
【发布时间】:2019-11-04 16:17:54
【问题描述】:

我想:

  1. 使用 VBA 作为 TCP/IP 客户端连接到某些计算机。
  2. 向它发送命令 - 说“帮助”+ vbcrlf
  3. 将回复捕获到剪贴板或文件中,然后我可以将两者都粘贴到工作表中
  4. 这部分真的让我很困惑 - 使用 .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 表格,我可以在其中指定端口号以及要在表格本身上发送的命令。

标签: excel vba putty plink


【解决方案1】:

您可以使用简单的输入重定向。您实际上已经使用| clip 重定向了输出。与重定向输入类似,请执行以下操作:

"echo help | " & cmd & " | clip"

另见How to execute remote command using PuTTY over Telnet

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 2015-02-22
    • 1970-01-01
    • 2017-04-13
    • 2013-04-09
    • 2015-12-14
    • 1970-01-01
    • 2017-06-18
    相关资源
    最近更新 更多