Linux shell 脚本 xcall.sh 查看集群jps - Go语言中文社区

Linux shell 脚本 xcall.sh 查看集群jps


参考
Linux – 脚本xcall.sh查看集群jps
https://blog.csdn.net/eraining/article/details/108470060

现有一个需求,希望一个脚本(在192.168.121.131 kafka01) 查看Kafka 集群内所有主机 程序启动情况
主机:192.168.121.131 kafka01
192.168.121.131 kafka01
192.168.121.132 kafka02
192.168.121.133 kafka03

step1 配置主机别名(192.168.121.131)

[root@kafka01 bin]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.121.131 kafka01
192.168.121.132 kafka02
192.168.121.133 kafka03

step2 三台要处理的机器,分别查看jdk

知道jdk安装在 /usr/local/java/jdk1.8.0_251 这个目录下 ,注意三台机器都要看

[root@kafka01 bin]# cat /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_251
export JRE_HOME=/usr/local/java/jdk1.8.0_251/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib:$KAFKA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$KAFKA_HOME/bin

step3 编写软连接,供脚本调用时候使用(三台都要处理)

在这里插入图片描述

如果想在任何地方都能使用 jps 指令 ,需要需要在 /usr/local/bin目录下创建jps的软连接

[root@kafka01 bin]# cd /usr/local/bin
[root@kafka01 bin]# ll
----- 这个是jdk 目录 /usr/local/java/jdk1.8.0_251
[root@kafka01 bin]# ln -s /usr/local/java/jdk1.8.0_251/bin/jps jps
[root@kafka01 bin]# ll
total 1
lrwxrwxrwx. 1 root root  36 Mar 28 00:27 jps -> /usr/local/java/jdk1.8.0_251/bin/jps

如果不配置这个软连接 xcall 调用的时候会提示

============= kafka02 jps =============
bash: jps: command not found

step4 编写xcall脚本

只要在执行脚本的那台机器上面做就好了,本地使用 192.168.121.131 kafka01
如果想在任何地方都能使用xcall.sh命令,需要将xcall.sh命令放到 /usr/local/bin/ 目录下

[root@kafka01 bin]# cd /usr/local/bin
[root@kafka01 bin]# ll
total 1
lrwxrwxrwx. 1 root root  36 Mar 28 00:27 jps -> /usr/local/java/jdk1.8.0_251/bin/jps

------由于之前hosts 目录的别名叫做kafka01..,所以本地的代码是这样的,如果兄台别名与示例不一致,需要改为自己的别名

touch xcall.sh
vim xcall.sh
#!/bin/bash
params=$@
i=1
for (( i=1 ; i <= 3 ; i = $i + 1 )) ; do
    echo ============= kafka0$i $params =============
    ssh kafka0$i "$params"
done

[root@kafka01 bin]# cd /usr/local/bin
[root@kafka01 bin]# ll
total 4
lrwxrwxrwx. 1 root root  36 Mar 28 00:27 jps -> /usr/local/java/jdk1.8.0_251/bin/jps
-rw-r--r--. 1 root root 154 Mar 28 00:24 xcall.sh
[root@kafka01 bin]# chmod u+x xcall.sh     ----给xcall.sh 赋予执行权限 
[root@kafka01 bin]# ll
total 4
lrwxrwxrwx. 1 root root  36 Mar 28 00:27 jps -> /usr/local/java/jdk1.8.0_251/bin/jps
-rwxr--r--. 1 root root 154 Mar 28 00:24 xcall.sh

step5 配置免密登录

如果不配置也可以,每次执行脚本都要输入密码

linux shell 免密登录 ssh-keygen
https://blog.csdn.net/wei198621/article/details/115277985

测试

[root@kafka01 bin]# xcall.sh jps
============= kafka01 jps =============
root@kafka01's password:  -----发现 本机需要输入密码,其他机器不需要输入密码 
59284 Jps
30583 Kafka
============= kafka02 jps =============
59186 Jps
31596 Kafka
============= kafka03 jps =============
31332 Kafka
58566 Jps
[root@kafka01 .ssh]# pwd
/root/.ssh
[root@kafka01 .ssh]# ll
total 20
-rw-------. 1 root root 1179 Mar 28 00:55 authorized_keys
-rw-------. 1 root root 1679 Mar 27 20:18 id_rsa
-rw-r--r--. 1 root root  393 Mar 27 20:18 id_rsa.pub   ----将自己的公钥KEY 追加一份到  authorized_keys 中去 
-rw-r--r--. 1 root root 1408 Mar 28 00:10 known_hosts

再次执行,自己登陆自己就不需要密码了

[root@kafka01 .ssh]# xcall.sh jps
============= kafka01 jps =============
30583 Kafka
62349 Jps
============= kafka02 jps =============
31596 Kafka
62206 Jps
============= kafka03 jps =============
61585 Jps
31332 Kafka
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/wei198621/article/details/115281754
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢