0
我想知道是否有任何的方式來創建一個bash腳本,接受1個參數,這是文件,然後它會做以下發送文件到遠程主機,執行遠程腳本,找回導致
- 使用SFTP(密碼,用戶名是 某處硬)自動登錄遠程主機上
- 使用ssh
- 執行一些腳本發送一個本地文件在
- 退出並登錄到遠程主機
- 從遠程std輸出中取回結果。
我想知道是否有任何的方式來創建一個bash腳本,接受1個參數,這是文件,然後它會做以下發送文件到遠程主機,執行遠程腳本,找回導致
使用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");
非常感謝。不過,我期待的是bash解決方案,主要是因爲我個人認爲Net :: OpenSSH perl模塊很難在OS X下安裝。 – user1998981
是可以做到這一點。我現在不能給你一個具體的例子,但我記得當我這樣做時,我需要首先手動登錄到遠程主機,以確保ssh密鑰已添加到信任存儲區。這個信息可能會派上用場...... – Floris
'ssh user @ host command'會在遠程機器上運行命令。該命令可以是sh somescript> output.txt。然後,您可以將output.txt scp到您的客戶機。 –
@UsmanSaleem如果你使用ssh,需要以交互方式輸入遠程機器的密碼。我知道有一種方法可以設置主機密鑰來實現,但這有點複雜,並且在某些情況下可能無法使用。 – oyss