查询 所有服务所在具体哪台服务器上的脚本

在一个服务器的 root 目录下,创建一个 check-services.sh 文件

脚本内容如下:

#!/bin/bash

## 检查本机上的服务
## $1 - 服务名称
## $2 - 进程关键字
#    function find_service_in_localhost() {
#  local service=$1
#  local keyword=$2
#
#  count=$(ps aux | grep ${keyword} | grep -v grep | wc -l)
#  if [ ${count} -gt 0 ]; then
#    printf "%-25s 运行中\n" ${service}
#  else
#    printf "%-25s 没有运行!!!\n" ${service}
#  fi
#    }

# 主机列表 (在系统 host 文件中设置如下的机器名 在 /etc/hosts 下面)
servers=(server1 server2 server3 server4 server5)

# 获取所有主机上的进程信息

# 各个服务要陪着 ssh 免密连接
len=${#servers[@]}
for ((i=0; i < $len; i++)); do
  cmds[$i]=$(ssh root@${servers[$i]} ps ax | awk '{out=$5; for(i=6;i<=NF;i++){out=out" "$i}; print out}')
done

# 在所有主机上的查找服务
function find_service_in_servers() {
  local service=$1
  local keyword=$2

  local len=${#servers[@]}
  for ((i=0; i < $len; i++)); do
    count=$(echo "${cmds[$i]}" | grep ${keyword} | wc -l)
    if [ ${count} -gt 0 ] ; then
      found=true
      printf "%-25s 运行在 %s\n" ${service} ${servers[$i]}
    fi
  done

  if [ "$found" = false ] ; then
    printf "%-25s 没有运行!!!\n" ${service}
  fi
}

find_service_in_servers mysqld mysqld
find_service_in_servers redis-server redis-server
find_service_in_servers nginx nginx
find_service_in_servers consul consul

扫描二维码关注公众号,回复: 10245401 查看本文章

find_service_in_servers device-access device-access-1.0.0-SNAPSHOT.jar

2、给创建的 check-services.sh 赋 权限

    chmod 777 check-services.sh

3、查询返回结果

发布了20 篇原创文章 · 获赞 0 · 访问量 9170

猜你喜欢

转载自blog.csdn.net/qq_30346433/article/details/104626006