【问题标题】:Scripting with PuTTY's PSFTP and suppressing the output使用 PuTTY 的 PSFTP 编写脚本并抑制输出
【发布时间】:2015-05-12 15:06:38
【问题描述】:

我正在尝试编写一个 ruby​​ 脚本来执行PuTTY's PSFTP 程序并接收输出以用于进一步处理,然后将一个数字报告给Zabbix。但是,当我运行脚本时,PSFTP 会输出一些文本,这会影响我的 Zabbix 项目。

C:\Ruby\>corporate_sftp3 -o xml
Using username "serviceuser". #<--This is what is causing issues
3

带有注释的行是我的 Zabbix 项目的部分。由于我使用的是 Windows,因此 Linux 必须将所有输出都扔到 /dev/null 的便捷方法不适用,并且我无法安装 Cygwin。有没有办法让 Ruby 或 PSFTP 不显示那段文本,这样我就可以只得到数字了?

我的代码在这里:https://github.com/predatorian3/gem_sftp3

【问题讨论】:

  • 3 来自哪里?也来自 PSFTP 输出或直接来自您的 Ruby 代码?向我们展示您的代码!
  • 稍后,我正在努力使我的密码等不在纯文本和代码中。
  • 我添加了 Git 存储库
  • 我确实考虑过尝试使用 Zabbix Sender 项目并手动发送它,但我试图让 Zabbix 为我完成所有工作。

标签: ruby windows putty zabbix


【解决方案1】:

在谷歌上疯狂搜索了一天后,我终于偶然发现了一篇博文

http://blog.bigbinary.com/2012/10/18/backtick-system-exec-in-ruby.html

这篇博文解释了 Popen3 是什么。我把它放在我的代码中,现在它只显示我想要显示的输出,而不是外部程序试图显示的内容。代码块看起来像

count = 0

Open3.popen3( psftp_cmd ) do |stdin, stdout, stderr, wait_thr|
  while line = stdout.gets
    count += 1 if line =~ pattern
  end
end

puts count

那么我得到的结果是:

C:\Ruby\>corporate_sftp3 -o xml
3

最终代码在初始帖子中发布在 Github 存储库中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 2012-10-30
    • 2016-03-29
    • 2011-08-23
    • 2012-09-26
    相关资源
    最近更新 更多