我有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
答案 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)