使用 PuTTY 的 PSFTP 编写脚本并抑制输出

Scripting with PuTTY's PSFTP and suppressing the output

我正在尝试编写一个 ruby 脚本来执行 PuTTY's PSFTP program and receive the output to use in further processing and then report a number to 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

疯狂谷歌了一天,终于偶然发现了一个博客post

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

此博客 post 解释了 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

最终代码 post 编辑在初始 post 的 Github 存储库中。