시스템 관리자(System Administrator)의 업무는 결코 만만치 않습니다. 서버 상태 점검, 사용자 관리, 로그 분석, 백업 생성 등 매일 반복해야 할 일이 끊이지 않기 때문입니다. 그래서 대부분의 관리자는 이러한 반복 작업을 자동화하기 위해 스크립트를 활용합니다.
이번에 소개할 셸 스크립트는 전형적인 시스템 관리 업무 전체를 자동화하는 것을 목표로 하지는 않지만, 특히 리눅스 초보자에게 유용합니다. 시스템, 네트워크, 사용자, 부하(Load), RAM, 호스트명, 내부 IP, 외부 IP, 가동 시간(Uptime) 등 필요한 대부분의 정보를 한 번의 명령으로 확인할 수 있기 때문입니다.
출력 결과의 가독성도 상당 부분 신경 써서 정리했습니다. 스크립트에는 악성 코드가 전혀 포함되어 있지 않으며, 일반 사용자 계정으로 실행할 수 있습니다. 오히려 root가 아닌 일반 사용자 권한으로 실행하는 것을 권장합니다.
아래 코드는 Tecmint와 저작자에게 적절한 크레딧을 표기하는 조건 하에 자유롭게 사용·수정·재배포할 수 있습니다. 불필요한 출력 없이 필요한 정보만 깔끔하게 보여주도록 다듬었으며, 일반적인 리눅스 시스템에서 잘 사용하지 않는 변수들을 활용해 충돌 가능성도 최소화했습니다.
최소 시스템 요구 사항
필요한 것은 정상적으로 동작하는 리눅스 머신 하나면 충분합니다.
종속성(Dependency)
표준 리눅스 배포판이라면 별도의 종속 패키지 없이 바로 사용할 수 있습니다. 또한 스크립트 실행 자체에는 root 권한이 필요하지 않습니다. 다만 설치를 원한다면 root 비밀번호를 한 번 입력해야 합니다.
보안
시스템 보안을 위해 추가 패키지 설치나 의존성 도입은 전혀 이루어지지 않습니다. 실행에 root 권한도 요구하지 않습니다. 코드는 Apache 2.0 라이선스로 배포되므로, Tecmint의 저작권 표기를 유지하는 한 자유롭게 편집·수정·재배포할 수 있습니다.
설치 및 실행 방법
먼저 아래의 wget 명령으로 모니터링 스크립트 tecmint_monitor.sh를 다운로드하고, 적절한 실행 권한을 부여합니다.
# wget https://tecmint.com/wp-content/scripts/tecmint_monitor.sh # chmod 755 tecmint_monitor.sh
스크립트는 반드시 root가 아닌 일반 사용자로 설치하는 것이 좋습니다. 설치 과정에서 root 비밀번호를 묻고, 필요한 구성 요소들이 알맞은 위치에 배치됩니다.
tecmint_monitor.sh 스크립트를 설치하려면 아래와 같이 -i(install) 옵션을 사용하면 됩니다.
./tecmint_monitor.sh -i
프롬프트가 나타나면 root 비밀번호를 입력하세요. 문제없이 완료되면 다음과 같은 성공 메시지가 표시됩니다.
Password: Congratulations! Script Installed, now run monitor Command
설치가 끝나면 어느 위치에서든, 어떤 사용자 계정으로든 monitor 명령만 호출하면 됩니다. 굳이 설치하지 않고 싶다면 실행할 때마다 스크립트 경로를 직접 지정해야 합니다.
# ./Path/to/script/tecmint_monitor.sh
이제 어떤 계정으로든 어디서든 간단히 monitor 명령을 실행할 수 있습니다.
$ monitor
명령을 실행하는 즉시 다음과 같은 시스템 정보를 확인할 수 있습니다.
- 인터넷 연결 상태(Internet Connectivity)
- OS 종류(OS Type)
- OS 이름(OS Name)
- OS 버전(OS Version)
- 아키텍처(Architecture)
- 커널 릴리스(Kernel Release)
- 호스트명(Hostname)
- 내부 IP(Internal IP)
- 외부 IP(External IP)
- 네임 서버(Name Servers)
- 로그인 중인 사용자(Logged In Users)
- RAM 사용량(Ram Usages)
- 스왑 사용량(Swap Usages)
- 디스크 사용량(Disk Usages)
- 부하 평균(Load Average)
- 시스템 가동 시간(System Uptime)
-v(version) 스위치를 사용하면 설치된 스크립트의 버전을 확인할 수 있습니다.
$ monitor -v tecmint_monitor version 0.1 Designed by Tecmint.com Released Under Apache 2.0 License
마치며
이 스크립트는 필자가 직접 테스트한 여러 머신에서 별도 설정 없이 바로 동작했으며, 여러분의 환경에서도 같은 결과를 기대할 수 있습니다. 버그를 발견하면 댓글로 알려주세요. 이것은 끝이 아니라 시작입니다. 이 코드를 바탕으로 원하는 수준까지 확장해 나갈 수 있습니다.
일부 리눅스 배포판에서 스크립트가 동작하지 않는다는 피드백을 받았고, 오랜 독자인 Andres Tarallo 님이 주도적으로 모든 리눅스 배포판과 호환되도록 개선해 주셨습니다. 업데이트된 스크립트는 GitHub의 https://github.com/atarallo/TECMINT_MONITOR/ 에서 확인할 수 있습니다.
스크립트를 수정해 더 발전시키고 싶으시다면 적절한 크레딧을 남기는 조건으로 얼마든지 진행하셔도 좋습니다. 개선된 스크립트를 공유해 주시면 크레딧과 함께 본문에 반영하겠습니다.
여러분의 생각이나 직접 만든 스크립트도 언제든 공유해 주세요. 항상 도움을 드릴 준비가 되어 있습니다. 보내주시는 사랑에 감사드리며, 앞으로도 많은 관심 부탁드립니다!