Bash shell script to view Linux Server System Information
Bash Shell 스크립트는 UNIX와 Linux 환경에서 사용되는 스크립트 언어로, Bash(Bourne-Again SHell) 셸에서 사용할 수 있는 명령어를 직렬화하여 일련의 작업을 자동화하는 데 사용됩니다.
간단하게 RHEL 계열의 리눅스 시스템에 대한 정보를 확인할 수 있는 스크립트
- Hostname
- Uptime
- Processor Name > arm VM에서 진행후 미표기
- OS Version
- Kernel Version
- Architecture
- Current Time
- System Product
- Active User
- System Main IP
기본적으로 구성은 10가지.
로그 파일은 사용자의 홈 디렉토리에 생성됩니다.
#!/bin/bash
log_file=~/system_check_$(date +%Y%m%d%H%M%S).log
echo "##### Create 2023-11-21 Version 1.0 ######" >> $log_file
echo "##### Create By.EndofLinux WebSite Admin ########" >> $log_file
echo >> $log_file
# System Info #
echo "################## 0. Server System Info ##################" >> $log_file
echo "System Information >> " >> $log_file
echo "Hostname : $(hostname)" >> $log_file
echo "Uptime : $(uptime -p)" >> $log_file
echo "Processor Name : $(grep 'model name' /proc/cpuinfo | head -1 | awk -F ':' '{print $2}')" >> $log_file
echo "OS Version : $(cat /etc/redhat-release)" >> $log_file
echo "Kernel Version : $(uname -r)" >> $log_file
echo "Architecture : $(uname -m)" >> $log_file
echo "Current Time : $(date)" >> $log_file
echo "System Product : $(sudo dmidecode -s system-product-name)" >> $log_file
echo "Active User : $(whoami)" >> $log_file
echo "System Main IP : $(hostname -I | awk '{print $1}')" >> $log_file
echo "" >> $log_file
** 스크립트 작성 후 실행권한 부여 **
# chmod +x /path/~~.sh
호스트 이름: 현재 시스템의 이름을 출력합니다.
가동 시간: 시스템이 얼마나 오래 동작했는지를 출력합니다.
프로세서 이름: 시스템의 프로세서 모델 이름을 출력합니다.
OS 버전: 운영시스템의 버전을 출력합니다.
커널 버전: 커널의 버전을 출력합니다.
아키텍처: 시스템의 아키텍처 (예: x86, x86_64 등)를 출력합니다.
현재 시간: 현재 시간을 출력합니다.
시스템 제품: 시스템 제품 이름을 출력합니다.
활성 사용자: 현재 사용자 이름을 출력합니다.
시스템 주 IP: 시스템의 주 IP 주소를 출력합니다.
메모리, 스왑, CPU 사용량을 %로 표기
# Memory Usage
echo "################## 1. Memory Usage ##################" >> $log_file
free -m | awk 'NR==2{printf "Memory Usage: %.2f%%\n", $3*100/$2 }' >> $log_file
echo "" >> $log_file
# Swap Usage
echo "################## 2. Swap Usage ##################" >> $log_file
free -m | awk '/Swap/ { printf "Swap Usage: %.2f%%\n", $3/$2*100 }' >> $log_file
echo "" >> $log_file
# CPU Usage
echo "################## 3. CPU Usage ##################" >> $log_file
echo "CPU Usage : $(top -b -n2 | grep "Cpu(s)" | tail -n 1 | awk '{print $2 + $4}')%" >> $log_file
echo "" >> $log_file
free -m 명령어는 메모리와 스왑의 전체 용량과 사용 용량을 메가바이트 단위로 출력. 이를 awk 명령어로 파싱하여 사용율을 계산합니다.
top -b -n2는 CPU 사용율을 출력하는데 사용, 시스템의 전반적인 상태를 보여주는 top 명령어를 배치 모드로 2번 실행하는 것입니다. CPU 사용율을 파싱하여 사용율을 계산합니다.