2016-08-14 84 views
-1

我很難創建一個腳本,獲取子文件夾裏面的文件夾,並打開與其他服務器的SSH連接,執行axel命令從文件夾下載每個文件,並在作業完成時擦除文件夾和文件。Shell腳本打開SSH連接執行命令

一旦這個服務器和文件夾在互聯網上打開,我假裝使用Axel加速文件下載。

任何人都可以幫到我嗎?

感謝名單

+1

歡迎來到Stack Overflow。請參閱[如何提問](http://stackoverflow.com/help/how-to-ask)和[如何創建最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve )。 – pah

+1

請完全描述**你遇到什麼問題。這不是一個「爲你寫代碼」的服務;相反,我們正在努力通過規範的答案建立一個緊密聚焦的問題的數據庫;這個廣泛的問題可以分解成許多更小的問題,並且很可能很多(如果不是大多數)這些問題已經在這裏提出並回答了。 –

回答

0

下面是腳本使用ssh

#!/usr/bin/expect -f 

spawn ssh [email protected]$host bash script_to_run_on_server "$directory_path" 
sleep 2 
expect "password:" { 
    send "${$password}\r" 
} 
interact 

在上面的腳本中,主機,用戶名,密碼,目錄路徑的變量,你可以根據你的價值觀取代連接到遠程服務器。

您的邏輯'execute an axel command to download each file from the folder, and erase the folder and the files when the job is done'顯示寫在script_to_run_on_server

注意:請確保目錄已經讀取,寫入超出服務器環境。

+2

如果你必須*鼓勵人們在編程使用期間傳遞明文密碼,爲什麼不建議'sshpass'而不是用'expect'重新發明輪子? –

+0

...說,我沒有看到任何需要明文密碼(比如說,RSA密鑰)的問題。 –

+0

@ CharlesDuffy-我不知道sshpass。我將通過它的手冊頁 –