Скрипт для генерации процессора, памяти, состояния диска и сохранения вывода в файле .csv - PullRequest
0 голосов
/ 13 октября 2019

Я написал скрипт для получения данных о загрузке процессора, памяти, дисков и inode нескольких серверов Linux. Но когда я выполняю сценарий, я полагаю, что цикл for не работает, и я получаю результат только одного сервера (сервера, который в данный момент выполняет сценарий).

Ниже приведен мой код:

#! /bin/bash
for i in $(cat host.txt)
do
  hostname=$(hostname -s)
  memory=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')
  mem_health=$(free -m | awk 'NR==2{ print  int($3*100/$2) }')
  if [ $mem_health -ge 80 ];
  then
    mem_health="CRITICAL"
  else
    mem_health="NORMAL"
  fi
  DISK=$(df -h | awk '$NF=="/"{printf "%s", $5}')
  disk_health=$(df -h | awk '$NF=="/"{printf int($5)}')
  if [ $disk_health -ge 80 ]
  then
    disk_health="CRITICAL"
  else
    disk_health="NORMAL"
  fi
  CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%", $(NF-2)}')
  CPU_health=$(top -bn1 | grep load | awk '{printf  int($(NF-2))}')
  if [ $CPU_health -ge 80 ]
  then
    CPU_health="CRITICAL"
  else
    CPU_health="NORMAL"
  fi
  INODE=$(df -h | awk '$NF=="/opt"{printf "%s", $5}')
  inode_health=$(df -h | awk '$NF=="/opt"{printf int($5)}')
  if [ $inode_health -ge 80 ]
  then
    inode_health="CRITICAL"
  else
    inode_health="NORMAL"
  fi
  df -h > output.txt
  printf '%-16s %-10s %-13s %-8s %-13s %-7s %-13s %-7s %-13s %-7s %-13s %-1s\n' "Hostname" "Memory" "MEM_HEALTH" "Disk" "Disk_Health" "CPU" "CPU_Health" "INODE" "inode_health"
  printf '%-16s %-10s %-13s %-8s %-13s %-7s %-13s %-7s %-13s %-7s %-13s %-1s\n' "$hostname" "$memory" "$mem_health" "$DISK" "$disk_health" "$CPU" "$CPU_health" "$INODE" "$inode_health"
done

Подводя итог, мне нужны выходные данные памяти, состояние памяти, индекс состояния процессора и процессора, состояние индекса, использование диска и его состояние на нескольких серверах Linux, а также вывод в файл .CSV. Может ли кто-нибудь помочь мне с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...