쉘스크립트 부분
쉘 스크립트를 통해 작성하면 다음과 같이 쓸 수 있다. (개행도 맞춰줘야 합니다)
(실행이 안 되는 명령어가 있다면 패키지를 설치해야 하는 경우일 수도 있습니다)
#!/bin/bash
printf "#Architecture: "
uname -a
printf "#CPU physical : "
nproc --all
printf "#vCPU : "
cat /proc/cpuinfo | grep processor | wc -l
printf "#Memory Usage: "
free -m | grep Mem | awk '{printf"%d/%dMB (%.2f%%)\n", $3, $2, $3/$2 * 100}'
printf "#Disk Usage: "
df -BM -a | grep /dev/mapper/ | awk '{sum+=$3}END{print sum}' | tr -d '\n'
printf "/"
df -BM -a | grep /dev/mapper/ | awk '{sum+=$2}END{print sum}' | tr -d '\n'
printf "MB ("
df -BM -a | grep /dev/mapper/ | awk '{sum1+=$3 ; sum2+=$2 }END{printf "%d", sum1 / sum2 * 100}' | tr -d '\n'
printf "%%)\n"
printf "#CPU load: "
mpstat | grep all | awk '{printf "%.2f%%\n", 100-$13}'
printf "#Last boot: "
who -b | sed 's/ system boot //g'
#(주석) 'system boot'앞 뒤로 적절한 갯수의 스페이스 집어넣었음
printf "#LVM use: "
if [ "$(lvscan | grep -i ACTIVE | wc -l)" -gt 0 ] ; then printf "yes\n" ; else printf "no\n" ; fi
printf "#Connections TCP : "
ss -t | grep -i ESTAB | wc -l | tr -d '\n'
printf " ESTABLISHED\n"
printf "#User log: "
who | wc -l
printf "#Network: IP "
/sbin/ifconfig | grep broadcast | sed 's/inet//g' | sed 's/netmask.*//g' | sed 's/ //g' | tr -d '\n'
printf " ("
/sbin/ifconfig | grep 'ether ' | sed 's/.*ether //g' | sed 's/ .*//g' | tr -d '\n'
printf ")\n"
printf "#Sudo : "
grep 'sudo:' /var/log/auth.log | grep 'COMMAND=' | wc -l | tr -d '\n'
printf " cmd\n"
- 이를 /monitoring.sh로 작성하고 “chmod +x /monitoring.sh”을 통해 실행 권한 부여.
- 그 후 /monitoring.sh | wall하면 모든 사용자에게 스크립트 출력 내용이 띄워지게 된다.
- 마지막으로 “sudo crontab -e”를 통해 root 계정의 crontab 스케쥴러를 열고 난 후 “*/10 * * * * /monitoring.sh | wall”을 입력하여 매 10분마다 root권한에서 “/monitoring.sh | wall”이 실행되도록 한다. 그러면 10분마다 다음과 같은 화면이 출력될 것이다.
- 실행 주기를 30초로 하고 싶은 경우 : sleep를 활용 크론탭에 “*/1 * * * * /monitoring.sh | wall”과 “*/1 * * * * (sleep 30; /monitoring.sh | wall )”을 추가