2013-01-22 22 views
0

我想知道是否有任何的方式來創建一個bash腳本,接受1個參數,這是文件,然後它會做以下發送文件到遠程主機,執行遠程腳本,找回導致

  1. 使用SFTP(密碼,用戶名是 某處硬)自動登錄遠程主機上
  2. 使用ssh
  3. 執行一些腳本發送一個本地文件在
  4. 退出並登錄到遠程主機
  5. 從遠程std輸出中取回結果。
+0

是可以做到這一點。我現在不能給你一個具體的例子,但我記得當我這樣做時,我需要首先手動登錄到遠程主機,以確保ssh密鑰已添加到信任存儲區。這個信息可能會派上用場...... – Floris

+1

'ssh user @ host command'會在遠程機器上運行命令。該命令可以是sh somescript> output.txt。然後,您可以將output.txt scp到您的客戶機。 –

+0

@UsmanSaleem如果你使用ssh,需要以交互方式輸入遠程機器的密碼。我知道有一種方法可以設置主機密鑰來實現,但這有點複雜,並且在某些情況下可能無法使用。 – oyss

回答

0

使用Perl和Net::OpenSSH

use Net::OpenSSH; 

my $ssh = Net::OpenSSH->new($host, user => $user, password => $password); 
my $sftp = $ssh->sftp; 
$sftp->put("/local/path/to/script", "bin/my_script"); # => ~/bin/my_script 
$sftp->chmod("bin/my_script", 0755); 
$ssh->system({stdout_file => '/tmp/script.out'}, "bin/my_script"); 
+0

非常感謝。不過,我期待的是bash解決方案,主要是因爲我個人認爲Net :: OpenSSH perl模塊很難在OS X下安裝。 – user1998981