2014-03-03 2 views
0

wget의 stdout을 net :: ssh를 사용하여 중계하려고합니다. 이 같은Net :: SSH`wget` 진행률 표시 줄

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를 통해 얻는 것과는 완전히 다릅니다.

답변

0

이 경우 wget은 의심되는 배송비가 아닌 것으로 보입니다.

두 개의 진행 출력 모드 bardot이 있습니다. 출력이 tty (내가 로컬에 가지고있는 것) 인 경우 bar가 기본값이지만 dot은 비 tty 세션 (ssh를 통해 얻은 것)의 기본값입니다. dot 진행률 표시 줄에 캐리지 리턴이 없습니다. 그래서 나는 왜 내가 그들을 보지 않고 있는지 설명합니다.

--progress=bar:forcewget 호에 추가하면 예상대로 작동하고, 캐리지 리턴과 모두가 작동합니다.

나는이 문제를 해결하기 위해 모든 질문에 약간의 이름을 바꿀 것입니다.