簡體   English   中英

使用Shell腳本自動進行SCP網站文件傳輸

[英]Automate scp website file transfer using a shell script

我有3個數字海洋小滴,如何將一個小滴文件自動轉換為另外2個小滴,所以我寫了一個scp shell腳本。 伙計們,您還有其他建議嗎?還是可以輕松地在兩個小滴之間傳輸文件?

#! /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/ SERVER1USER@SERVER1IP:$SERVER1PATH

echo -e "\n--- Second Server files transferring now... ---\n"
sshpass -p "$SERVER2PSWD" scp -r /etc/var/html/www/ SERVER2USER@SERVER2IP:$SERVER2PATH

我更喜歡在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 hdfs@%s '%s;'"
        for eachCommand in commands.split(";"):
                sshCall = sshTemplate%(ip, eachCommand)
                if DEBUG: print sshCall
                else: call(sshCall, shell=True)


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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM