工具:三台虚拟机(hadoop102、hadoop103、hadoop104)、xshell6
一、无密钥配置
(1)进入到我的home目录
[alex@hadoop102 ~]$ cd ~/.ssh
(2)生成公钥和私钥
三台虚拟机都运行这条指令
[alex@hadoop102 .ssh]$ ssh-keygen -t rsa
注:敲三个回车,生成id_rsa(私钥)、id_rsa.pub(公钥)两个文件
(3)将公钥拷贝到要免密登录的目标机器上
在三台虚拟机都运行这三条指令
[alex@node1 .ssh]$ ssh-copy-id hadoop102
[alex@node1 .ssh]$ ssh-copy-id hadoop103
[alex@node1 .ssh]$ ssh-copy-id hadoop104
二、xjp
(1)创建xjps
[root@hadoop102 .ssh]# cd /usr/local/bin/
[root@hadoop102 bin]# touch xjp
[root@hadoop102 bin]# ll
total 8
-rwxr-xr-x. 1 alex alex 170 Sep 11 12:10
-rwxr-xr-x. 1 alex alex 546 Sep 11 11:37 xsync
[root@hadoop102 bin]# vim xjps
xjps 内容:
#!/bin/bash
user=`whoami`
for((host=102; host<=104; host++)); do
echo -e "\n================ $user@hadoop$host ================"
ssh $user@hadoop$host 'jps'
done
(2)配置
[root@hadoop102 ~]# vim .bashrc
加入以下内容:
export JAVA_HOME=/opt/module/jdk1.8.0_144
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
(3)查看结果
三、xsync
(1)创建xsync
[root@hadoop102 ~]# cd /usr/local/bin/
[root@hadoop102 bin]# touch xsync
[root@hadoop102 bin]# ll
total 8
-rw-r--r--. 1 root root 0 Sep 11 14:57 a.txt
-rwxr-xr-x. 1 alex alex 170 Sep 11 12:10 xjps
-rwxr-xr-x. 1 alex alex 546 Sep 11 11:37 xsync
[root@hadoop102 bin]# vim xsync
(2)xsync的内容
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=103; host<=104; host++)); do
#echo $pdir/$fname $user@hadoop$host:$pdir
echo -e "\n--------------- hadoop$host ----------------"
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
(3)运行,并查看结果