2014-07-12 3 views
1

누군가가 GitHub 용으로 올바르게 설정된 SSH 키를 가지고 있는지 프로그래밍 방식으로 확인하고 싶습니다. Ruby에서 `ssh -T [email protected]`을 사용할 수 있음을 이해합니다. 그러나, 나는 변수에 ssh 출력을 유지하고 싶습니다.ssh 명령의 출력을 얻으려면 어떻게해야합니까?

내 현재 코드는 다음과 같습니다

github_response = `ssh -T [email protected]` 
unless github_response.start_with?('Hi') 
    puts 'Please set up your GitHub ssh keys' 
end 

`ssh -T [email protected]`는 ("안녕"로 시작하는) 응답을 출력합니다. 그러나 github_response 변수는 nil입니다.

`ssh -T [email protected]`의 출력을 github_response에 어떻게 지정할 수 있습니까?

답변

3

Hi xxx! You've successfully authenticated.... 메시지가 stdout이 아니고 stderr가 아니기 때문에 예제가 실패했습니다.

> require 'open3' 
=> true 
> stdin, stdout, stderr, wait_thr = Open3.popen3('ssh -T [email protected]') 
=> [#<IO:fd 8>, #<IO:fd 9>, #<IO:fd 11>, #<Thread:0x007f89ee1149a8 sleep>] 

> stdout.gets 
=> nil 
> stderr.gets 
=> "Hi halfelf! You've successfully authenticated, but GitHub does not provide shell access.\n" 
0

자세한 출력을 위해 -v를 추가 할 수 있습니다. 그러면 연결 정보 대부분을 stdout으로 덤프합니다. 그 로그에서 서버가 ssh 클라이언트가 제공 한 키를 받아 들일 수 있는지 알아보기 위해

관련 문제