【问题标题】:Ruby stop Telnet echo the command sentRuby 停止 Telnet 回显发送的命令
【发布时间】:2013-03-12 18:09:19
【问题描述】:

我想知道是否有一个选项可以抑制我通过 Ruby Telnet 库在远程计算机上运行的命令。这是代码:

server = Net::Telnet::new("Host" => $hosts,
                          "Timeout" => 10,
                          "Prompt" => /[$%#>]/n)
server.login($user, $pass)
server.cmd("ls -1 /tmp/myfile.txt") do |c|
    puts c
end

输出将是:

ls -1 /tmp/myfile.txt
/tmp/myfile.txt
$

其中 $ 是提示符。我只想查看返回的“/tmp/myfile.txt”。所以我不必过滤脚本中的返回来忽略原始命令和提示。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: ruby telnet


    【解决方案1】:

    如果它总是在最后输出一个 shell 提示,那么去掉最后一行输出呢?我不相信 NET::Telnet 内部有什么特别的东西可以防止这种情况发生。您也可以尝试使用PTY with expect 方法来处理telnet。

    【讨论】:

    • 我想我可以通过在 output 的最后一行剥离提示来逃脱。但是,我不明白为什么命令本身会被回显。我希望 Ruby Telnet 库中有一些选项可以关闭回显。
    • 使用 PTY+Expect 您可以将详细设置为 false。签出:ruby-forum.com/topic/83119
    猜你喜欢
    • 2015-03-05
    • 2013-04-09
    • 2014-01-30
    • 2018-12-13
    • 2017-04-13
    • 2012-05-22
    • 1970-01-01
    • 2018-01-03
    • 2020-02-14
    相关资源
    最近更新 更多