1

我已经使用authorized_keyspush 对服务器进行了身份验证,因此我可以ssh 192.168.1.101从我的系统运行命令并可以通过服务器连接。

现在,我尝试了 library ,它对我不起作用

  Net::SSH.start("192.168.1.209",username) do |ssh|   @output=ssh.exec!("ls -l")  end

如,这是必需的用户名字段。我想要没有用户名。

所以,我试过这个

    system('ssh 192.168.1.209 "ls -l"') 

它为我运行命令。但我想要像@output第一个示例中那样的变量中的输出。是否有任何命令或任何方式可以让我获得解决方案?

4

3 回答 3

1

任何 ssh 连接都需要用户名。默认值是您的系统帐户名称或.ssh/config为您要连接的主机指定的任何名称。

您当前的用户名应设置为ENV['USER']您需要访问该用户名。

如果您对用于该连接的用户名感到好奇,请尝试找出ssh -v解释正在发生的事情的详细模式。

于 2012-02-24T15:49:22.420 回答
0

反引号的工作方式与“系统”功能非常相似,但有重要区别。用反引号括起来的 Shell 命令以标准输出作为结果执行。

因此,以下语句应执行 ssh 192.168.1.209 "ls -l" 并将目录文件列表放入 @output 变量:

@output = `ssh 192.168.1.209 "ls -l"`
于 2012-02-24T15:53:32.443 回答
0

您可以将参数传递到 %x[] 如下:

1. dom = ‘www.ruby-rails.in‘
2. @whois = %x[whois #\{dom\}]
于 2012-02-24T15:58:50.483 回答