社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
参考
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
[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
知道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
如果想在任何地方都能使用 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
只要在执行脚本的那台机器上面做就好了,本地使用 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
如果不配置也可以,每次执行脚本都要输入密码
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
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!