2016-01-21 61 views
0

我有3個數字海洋液滴,如何將一個液滴文件自動化到另一個2個液滴,所以我寫了一個scp shell腳本。 夥計們,你們有沒有其他建議或兩個水滴之間的文件傳輸?使用shell腳本自動化scp網站文件傳輸

#! /usr/bin/env bash 

# Variables 
SERVER1USER=root 
SERVER1PSWD=killergirls 
SERVER1IP=123.123.123.123 
SERVER1PATH=/etc/var/html/www/ 

SERVER2USER=root 
SERVER2PSWD=killerboys 
SERVER2IP=121.121.121.121 
SERVER2PATH=/etc/var/html/www/ 

echo -e "\n--- First Server files transferring now... ---\n" 
sshpass -p "$SERVER1PSWD" scp -r /etc/var/html/www/ [email protected]:$SERVER1PATH 

echo -e "\n--- Second Server files transferring now... ---\n" 
sshpass -p "$SERVER2PSWD" scp -r /etc/var/html/www/ [email protected]:$SERVER2PATH 
+0

您需要幫助的問題是什麼? – tripleee

+0

你看起來完全可用。但是dbl引用所有變量名總是一個好習慣,所以'scp -r/etc/var/html/www/SERVER1USER @ SERVER1IP:「$ SERVER1PATH」'等將來可以爲你節省時間目錄名稱中的空格。祝你好運。 – shellter

回答

0

我更喜歡在python中編寫這樣的東西。下面我有一個用於將hadoop部署到集羣的腳本示例。 可以通過添加更多文件,命令或ips來輕鬆擴展。

請注意,我喜歡在我實際運行它之前能夠打印將要執行的所有內容。 這是通過DEBUG變量完成的。

另外請注意,這可以在bash中完成,但由於我不是一個成熟的Bash程序員,因此Python對我來說更容易,也更不容易出錯。

DEBUG=1 
import subprocess 
call = subprocess.call 
ips = [] 
for i in range(0,10): 
    ips.append("10.0.0.%d"%(i)) 
commands = 'ls; echo "Hello"' 
def hadoop_setup(ip): 
     sshTemplate = "ssh [email protected]%s '%s;'" 
     for eachCommand in commands.split(";"): 
       sshCall = sshTemplate%(ip, eachCommand) 
       if DEBUG: print sshCall 
       else: call(sshCall, shell=True) 


copyFileTemplate = 'scp %s [email protected]%s:/home/hdfs' 
for file in ['.bashrc']: 
    for ip in ips: 
     copyFileCall = copyFileTemplate%(file,ip) 
     call(copyFileCall, shell=True)