使用shell脚本自动执行scp网站文件传输

时间:2016-01-21 05:55:28

标签: linux shell sh ubuntu-14.04 scp

我有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

1 个答案:

答案 0 :(得分: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 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)