2016-08-24 82 views
4

這個想法很簡單,我希望能夠從我的系統執行scp命令並將文件移動到另一臺計算機,反之亦然。用於安全傳輸的Bash腳本

我的情況有一個小問題。爲了連接到最終計算機,我必須首先ssh到host_b,然後ssh到host_c。

長話短說,我要複製我的所有文件HOST_B,然後再以HOST_C

這是scematic:

my_computer -> host_b -> host_c 

因爲,我必須這樣做才能運行我的每次都要手動編寫代碼,這有點令人沮喪,所以我認爲我應該製作自己的腳本來自動化這個過程。

這裏是我到目前爲止的代碼:

#!/usr/bin/expect -f 

echo 
echo "Move files from your computer to HostC!" 
echo 

printf 'Username for hostB: ' 
read -r userB 
hostb_addr='hostb.com' 

printf 'Username for hostC: ' 
read -r userC 
hostc_addr='hostc.com' 

printf 'File you want to move: ' 
read -r filepath 

scp_params='-P 8140' 

# connect via scp to hostB 
spawn scp $scp_params $filepath [email protected]$hostb_addr:~/temp_transfer 

interact 

主要思路是從我的電腦中的文件再次獲得一個臨時文件夾到hostB的,SCP他們要將hostc然後,hostB上刪除該文件。

我已經開始努力使這項工作,但我發現

注意一個「未找到重生的命令」:其實這是我第一次使用bash的

+0

@shellter不,你不能因爲安全......你應該像我告訴你的那樣去做,除非你在公司的網絡中硬連線。所以這是一個醃製 – Pavlos

回答

1

目前已經是一個內置功能在ssh/scp中執行此操作。您可以從您的hostB打開一個從本地位置開始的ssh-tunnel,而在一個命令中打開hostC。在scp中,你可以用-o標誌來做到這一點。

scp -o ProxyCommand="ssh $hostB nc $hostC 22" $path_to_file $hostC:$path_to_file 
+0

哇!謝謝!我會放手一搏! – Pavlos