shell使用&免密登录
需求描述
集群机器众多,每台ssh连接后再启动服务较为繁琐,
所以想在一台机器上执行shell脚本来对其他机器上的服务启动。
1.第一步,需要所有的机器先设置免密登录
2.第二步,在其中一台机器A上设置对其他所有机器的免密ssh连接
3.第三步,在其中一台机器A上执行shell脚本
shell脚本
编写的脚本在放到服务器系统上运行时,需要先修改文件的执行权限:
chmod 755 host_allow.sh
参考链接:https://www.cnblogs.com/parent-absent-son/p/12163725.html
以启动zookeeper、supervisor服务的例子来编写脚本:
#!/bin/bash
echo "start zookeeper server..."
#hosts里已经安装zookeeper的主机名,必须已经在/etc/hosts文件中将ip地址和主机名对应加上了才能使用
hosts="master node1 node2 node3"
#用循环来分别执行zkServer.sh start的脚本
for host in $hosts
do
echo "--------$host--------"
#必须加上source /etc/profile ,否则会报找不到文件的错误
ssh $host "source /etc/profile; /home/hadoop/zookeeper-3.4.10/bin/zkServer.sh start"
done
#!/bin/bash
echo "start supervisor ..."
hosts="node1 node2 node3 node4 "
for host in $hosts
do
echo "--------$host--------"
#nohup是后台启动,>${STORM_HOME}/logs/supervisor.log 2>&1 &为了让输出的日志不在控制台显示
ssh $host "source /etc/profile; nohup storm supervisor >${STORM_HOME}/logs/supervisor.log 2>&1 &"
done
免密登录
参考链接:https://blog.csdn.net/jeikerxiao/article/details/84105529
https://blog.csdn.net/CrazyXinma/article/details/83029351
设置完免密登录需要重启ssh服务:
service sshd restart