我想以编程方式检查是否有人为GitHub正确设置了SSH密钥。我知道我可以在Ruby中使用`ssh -T git@github.com`
。但是,我想将ssh输出保存在变量中。
我目前的代码是:
github_response = `ssh -T git@github.com`
unless github_response.start_with?('Hi')
puts 'Please set up your GitHub ssh keys'
end
`ssh -T git@github.com`
输出响应(从&#34开始;嗨")。但github_response
变量为nil
。
如何将`ssh -T git@github.com`
的输出分配给github_response
?
答案 0 :(得分:3)
您的示例失败,因为Hi xxx! You've successfully authenticated....
消息不是来自stdout,而是来自stderr。
> require 'open3'
=> true
> stdin, stdout, stderr, wait_thr = Open3.popen3('ssh -T git@github.com')
=> [#<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"
答案 1 :(得分:1)
您可以为详细输出添加-v,然后将大部分连接信息转储到stdout。从该日志中,您可以查找服务器是否接受ssh客户端提供的任何密钥