本教程含有两个脚本:
在~/shell/
新建scp脚本:
脚本一:从master复制内容到slave1、slave2
vi scp_all.sh
#!/bin/bash
prame=$1 #接收文件名
dirname=`dirname $1`
cd $dirname #进入该文件路径下
fullpath=`pwd -P .` #获得该文件的绝对路径
user=`whoami` #获得当前用户的身份
for ip in master slave1 slave2 #循环三个主机名
do
echo ============ $ip =============
scp -r $prame ${user}@$ip:$fullpath
done
chmod a+x scp_all.sh
使用说明
比如此两句话:
scp mapred-site.xml yarn-site.xml hadoop-sny@slave1:~/bigdata/hadoop-2.7.5/etc/hadoop/
scp mapred-site.xml yarn-site.xml hadoop-sny@slave2:~/bigdata/hadoop-2.7.5/etc/hadoop/
可替换成:
cd ~/bigdata/hadoop-2.7.5/etc/hadoop/
~/shell/scp_all.sh mapred-site.xml
~/shell/scp_all.sh yarn-site.xml
脚本二:用于执行三台服务器同样的指令,如jps
vi call_all.sh
#!/bin/bash
prame=$1 #接收命令参数
for ip in master slave1 slave2 #循环三个主机名
do
echo ============= $ip $prame ==============
ssh $ip "source ~/.bash_profile;$prame"
done
chmod a+x call_all.sh
使用说明
比如我们要在三台服务器执行jps
命令,可直接在master执行:
~/shell/call_all.sh jps
参考脚本:
对比与脚本一,如节点很多的时候,可参考下面方式
#!/bin/bash
prame=$1 #接收文件名
dirname=`dirname $1`
basename=`basename $1` #得到文件的basename
cd $dirname #进入该文件路径下
fullpath=`pwd -P .` #获得该文件的绝对路径
user=`whoami` #获得当前用户的身份
for(( i = 1; i < 3; i = $i + 1 ));do #遍历发送
echo ============ node$i =============
scp -rv $prame ${user}@node$i:$fullpath
done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。