查詢 所有服務所在具體哪臺服務器上的腳本

在一個服務器的 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

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

 

2、給創建的 check-services.sh 賦 權限

    chmod 777 check-services.sh

3、查詢返回結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章