2012-02-24 116 views
1

我一直在使用authorized_keys推,所以我可以從我的系統中運行命令ssh 192.168.1.101,並可能通過服務器連接認證服務器。現在SSH連接`authorized_keys`

,我試圖與庫,它並沒有爲我

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這樣的變量。是否有任何命令有任何寶石或任何我可以得到解決方案?

+0

也,我需要在一個請求實際上在shell提示下運行5-10命令.. – 2012-02-24 15:48:39

回答

0

,你可以把參數傳遞%×[]如下:

1. dom = ‘www.ruby-rails.in‘ 
2. @whois = %x[whois #\{dom\}] 
1

任何ssh連接都需要用戶名。默認值是您的系統帳戶名稱或您要連接的那臺主機的.ssh/config中指定的任何名稱。

,如果你需要訪問你的當前用戶名應設置爲ENV['USER']

如果您對該連接使用的用戶名感到好奇,請嘗試用ssh -v找出詳細模式,以解釋發生了什麼。

+0

,我能夠運行'ssh'192.168.1.209'它連接沒有要求的用戶名,因爲我複製了鑰匙,並加入到authorized_keys文件。 – 2012-02-24 15:52:46

+2

用戶名是始終即使授權密鑰所需要的,因爲關鍵並不一定知道哪個用戶在登錄服務器。可能是'ssh'從OS或配置文件 – PinnyM 2012-02-24 15:57:53

+1

讓您的用戶名沒錯,你可以在不連接它要求* *輸入用戶名,但是,這並不意味着它不使用*用戶名* – Gareth 2012-02-24 16:51:08

0

反引號的作品非常相似,「系統」的功能,但有重要的區別。作爲結果的標準輸出執行反引號之間的Shell命令。

所以,下面的語句應該執行的SSH 192.168.1.209 「ls -l命令」,並把目錄中的文件列表到@output變量:

@output = `ssh 192.168.1.209 "ls -l"`