Net :: SSH`wget`进度条

时间:2014-03-03 20:47:59

标签: ruby io terminal net-ssh

我正在尝试使用net :: ssh中继wget的stdout。即使我有这样的设置:

ssh.exec! cmd do |ch, stream, data|
  print data
end

我得到这样的输出:

  0K .......... .......... .......... .......... ..........  1% 18.8M 0s
 50K .......... .......... .......... .......... ..........  3% 23.7M 0s
100K .......... .......... .......... .......... ..........  4% 22.7M 0s
150K .......... .......... .......... .......... ..........  6% 23.8M 0s

当我希望用温度计进度条在同一行上打印所有内容时。我做错了什么?

修改

这实际上可能与远程进程(在本例中为wget)有关,而不是我的设置。在本地运行时,我得到如下输出:

100%[============================>] 3,208,462   7.65M/s   in 0.4s

这与我通过ssh得到的完全不同。

1 个答案:

答案 0 :(得分:0)

在这种情况下,看起来wget是罪魁祸首而不是我怀疑的回车。

有两种进度输出模式bardot。如果输出是tty(这是我本地的),则栏是默认值,但{t}是非tty会话中的默认值(这是我通过ssh获得的)。 dot进度条没有回车符。这就解释了为什么我没有看到它们。

dot选项添加到--progress=bar:force调用按预期工作,回车和所有。

我会把这个保留在这里并稍微重命名一下,以防每个人都遇到这个问题。