Linux集群下的统一远程拷贝和远程命令操作

前言

        当我们搭建集群的时候,通常需要重复性的安装多台虚拟机的很多相同的服务;这是可以采用建立在免密基础上的远程指令来完成,当然,一台一台的用远程指令来完成也显得很繁琐;别忘了,我们可以用shell脚本来实现,话不多少,下面看思路和代码!


一、shell脚本下的远程拷贝

        首先我们得明确虚拟机的免密是实现此功能的前提必要条件;先让我们完成各虚拟机间的免密工作!


1.1 免密设置

  • 生成秘钥
[root@single ~]# ssh-keygen -t rsa
  • 本机免密设置(此步不设置也不影响)
[root@single .ssh]# cat id_rsa.pub >> authorized_keys
  • 将本机公钥拷贝至需要远程访问的虚拟机上
  • TIPS:确保目标虚拟机秘钥已生成,建好authorized_keys目录方便拷贝
[root@single .ssh]# ssh-copy-id -i id_rsa.pub root@slave01
  • 测试连接:远程访问需要访问的虚拟机
[root@single .ssh]# ssh slave01

1.2 shell脚本配置

Attention:

  • 设置访问名单如使用主机名请确保主机名和ip映射完成;
  • 文件和目录拷贝分开,目录需递归拷贝;

创建并编辑脚本:

[root@single ~]# cd all
[root@single all]# vim all_send.sh
#!/bin/bash

if [ $# -lt 2 ];then
	echo"palease input 2 args : source and dest path"
	exit 0
fi

#远程访问名单-主机名(也可以换成ip)
#使用主机名请确保主机名和ip映射完成(没有请先去/etc/hosts下添加)
SERS="single master slave01 slave02 slave03"

echo "start to scp distribute : $1 ..."
for i in $SERS ;do
	#防止本机重复拷贝
	if [ $i != $HOSTNAME ];then
		echo -n "----- $i -----"
		#使用scp进行远程拷贝
		#文件和目录分开考虑,目录需要加 -r实现递归拷贝
		if [ -f $1 ];then
			CMD=`scp $1 root@$i:$2`
		elif [ -d $1 ];then
			CMD=`scp -r $1 root@$i:$2`
		fi
		echo ok
	fi
done


1.3 执行脚本并验证

        当我们在某台虚拟机上安装了我们需要的服务,并完成了如上配置后,此时我们可以开始执行脚本进行远程拷贝了。

[root@single all]# ./all_send.sh /opt/software/ /opt

执行如下(slave03未做免密),其余做了免密均成功:

在这里插入图片描述
查看各个虚拟机:
在这里插入图片描述


二、shell脚本下的统一集群命令

        当我们在工作环境中经常需要在多台虚拟机上执行某条命令时,例如查看每台服务器的服务运行情况;通常我们可能需要切换多个窗口依次查看,利用上面远程拷贝的思路,我们完全也可以用远程指令来完成指令的发布和结果的查看。

TIPS:需要先完成服务器之间的免密配置(具体见第一项的免密设置)


2.1 shell脚本配置

        思路和上面配置类似:

#!/bin/bash

if [ $# -ne 1 ]
then
	echo "please input one sys cmd(like 'jps' etc)"
fi
#设置访问名单
SERS="single master slave01 slave02 slave03"

for i in $SERS
do
	echo "-------------------------- [ $1 ] $i --------------------------------"
	#远程执行命令
	CMD=`ssh root@$i "$1"`
	#显示执行命令的结果
	echo $CMD
done

2.2 执行脚本并验证

执行如下(slave03未做免密),其余做了免密均成功:

[root@single all]# ./alljps.sh jps

在这里插入图片描述


PS:如果有写错或者写的不好的地方,欢迎各位大佬在评论区留下宝贵的意见或者建议,敬上!如果这篇博客对您有帮助,希望您可以顺手帮我点个赞!不胜感谢!

原创作者:wsjslient

作者主页:https://blog.csdn.net/wsjslient


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值