2016-02-29 64 views
0

我需要編寫一個使用ssh連接到「first_machine」並從這裏運行rsync到另一臺機器[email protected]的bash命令行。來自Ruby的一個命令行中的ssh和rsync

這是我的代碼:

first_machine = [email protected] 
cmd="ssh #{first_machine} \"rsync -e\"ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\" --archive -H /home/user/aaaaa [email protected]:/home/remoteuser/\" " 

exit_status = system("#{cmd}") 

我測試的ssh命令,也是rsync分開。它們工作得很好,所以我可以從那裏我運行Ruby腳本和機器的ssh做:

rsync -e"ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --archive -H /home/user/aaaaa [email protected]:/home/remoteuser/ 

#{first_machine}推出的時候效果很好 - >文件夾複製。

相反,當我通過Ruby腳本運行我的代碼我收到錯誤:

Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
rsync: connection unexpectedly closed (0 bytes received so far) [sender] 
rsync error: unexplained error (code 255) at io.c(605) [sender=3.0.9] 

如果我單獨運行的命令不會發生此錯誤。

+1

您的第一行無效。你的'「#{cmd}」'是多餘的。 – sawa

+0

爲什麼是多餘的?我在另一臺機器上運行ruby腳本,然後「first_machine」 – user3472065

+0

因此,首先我需要連接到first_machine,然後執行rsync – user3472065

回答

0

首先,解決錫文在其他答案中指出的用戶問題。您是否在first_machine與運行ruby腳本的用戶之間建立了公鑰驗證?

然後,看看你的報價,你會看到你傳遞給ssh的命令只包含rsync -e。也許試試這個:

first_machine = '[email protected]' 
cmd="ssh #{first_machine} \"rsync -e 'ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' --archive -H /home/user/aaaaa [email protected]:/home/remoteuser/\" " 
exit_status = system(cmd) 

免責聲明:我從來沒有使用紅寶石之前,但在某些教程網站2分鐘一目瞭然清楚你已經在你的代碼示例有語法錯誤。

有沒有理由不這樣做作爲一個bash腳本?

+0

相同的結果做cmd =「ssh#{first_machine} \」rsync -e'ssh -o StrictHostKeyChecking = no -o UserKnownHostsFile =/dev/null'--archive -H/home/user/aaaaa [email protected]/ home/remoteuser/\「」 – user3472065

0

當您「分別運行命令」時,您將以具有已知權限和已設置環境的用戶身份運行它。

是您的提示,即從代碼登錄時,帳戶的權限不正確。這不是Ruby問題,這是不使用正確的帳戶或不設置環境的結果;它在Ruby之外。

+0

如果我在192.16.58.12機器上使用「user」連接到ssh,然後執行rsync -e'ssh -o StrictHostKeyChecking = no -o UserKnownHostsFile =/dev/null'--archive -H/home/user/aaaaa remoteuser @ 10.2.2.150:/ home/remoteuser/- >複製完成。這與我在Ruby命令CMD中的操作相同。那麼,這個問題怎麼可能來自權限和環境集呢?我使用的是相同的帳戶,分開工作。 – user3472065