- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- GPIO
- Android
- 리눅스
- Linux
- 쉘 스크립트 if문
- nginx
- 쉘 스크립트 기초
- LEVIATHAN
- ACL
- GUI
- 메소드
- Shell script
- 쉘 스크립트
- 프로젝트
- JSP
- RaspberryPi
- System
- 라즈베리파이
- 클라우드
- docker
- 자바
- synology
- centos docker
- 네트워크
- 그라파나
- 안드로이드
- API
- Java
- Python
- Tkinter
- Today
- Total
IT창고
쉘 스크립트 if문 3 본문
이번에는 if문과 awk 명령어를 사용해 좀 더 복합적으로 사용해보도록 하겠습니다.
먼저 쉘 스크립트를 작성 시 도움이되는 명령어 awk에 대해 알아보도록 하겠습니다.
awk는 주로 리눅스 스크립트를 사용할 때 자주 사용되며 패턴, 텍스트, 연산 등에 주로 사용되며 awk를 단독으로 사용하기 보단 grep이나 다른 명령어들과 함께 사용됩니다.
더 정확하게 확인하자면 데이터를 조작하고 리포트를 생성하기 위해 사용하는 언어로 리눅스에서 사용하는 awk는 GNU 버전의 gawk로 확인이 가능합니다. awk의 제작자는 3명으로 Alfred Aho, Peter Weinberger, Brian Kernighan 이들의 이름앞 이니셜을 가져와서 awk라고 부릅니다.
awk 명령어 형식은 아래와 같습니다.
awk [option] [awk program (pattern {action})] [argument]
awk 명령어 형식은 위와 같으며 awk에 사용될 옵션에 대해 알아보도록 하겠습니다.
awk 옵션 | 설명 |
-F | 필드 구분 문자 지정 |
-f | awk program에서 사용딜 파일 경로 지정 |
-v | awk program에서 사용될 변수 지정 |
-u | 버퍼를 사용하지 않고 출력 |
위는 awk명령어로 -F 옵션을 사용하여 ':'를 구분자로 사용해 test.txt파일에 텍스트를 출력하였습니다.
$n 필드에 숫자로 해당 필드에 단어를 출력하게 됩니다.
awk program에 사용되는 함수 패턴 몇가지를 알아보도록 하겠습니다.
pattern | 설명 |
문자열을 출력 | |
printf | 지정된 포맷 형식에 따라 문자열 출력 (printf "format" [expressions] [file]) |
system | 시스템 내부 명령어를 실행 |
int | 정수형으로 값을 리턴 |
rand | 0과 1사이에 난수를 발생 |
length | 문자열 길이를 반환 |
match | 문자열에서 정규표현식과 매칭되는 부분 위치를 넘김 (match(문자열,정규표현식)) |
sub | 지정한 문자열을 치환 |
gsub | 문자열을 일괄 치환 |
substr | 시작위치에서 주어진 길이만큼 문자열 치환 |
awk에 대해 어느정도 확인해보았으므로 이전 글에서 배운 내용으로 쉘 스크립트를 작성하도록 하겠습니다.
만들어볼 스크립트는 리눅스의 서버정보, CPU, RAM, HDD를 확인하는 쉘 스크립트 입니다.
위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.
#!/bin/bash
#simple helth_check script
#author: gsk121
export LANT=ko_KR.eucKR
echo "--------------------------- Server Info ------------------------------"
gsk_main=`dmidecode -t system | grep -i "manufacturer" | awk -F ':' '{print $2}'`
gsk_name=`dmidecode -t system | grep -i "product name" | awk -F ':' '{print $2}'`
gsk_serial=`dmidecode -t system | grep -i "serial number" | awk -F ':' '{print $2}'`
gsk_borad=`dmidecode -s baseboard-product-name`
echo "시스템 제조업체= "$gsk_main
echo "시스템 상품명= "$gsk_name
echo "시스템 시리얼 번호 = "$gsk_serial
echo "시스템 메인보드 모델명 = "$gsk_borad
echo ""
echo "---------------------------- CPU Info --------------------------------"
gsk_cpu=`(grep name /proc/cpuinfo | sort -u | awk -F ':' '{print $2}')`
gsk_cpuuse=`sar -u | grep -i average | awk -F" " '{print $3,"%"}'`
echo "CPU 정보= "$gsk_cpu
echo "CPU 사용률 = "$gsk_cpuuse
echo ""
echo "---------------------------- Memory Info --------------------------------"
gsk_mem1=`free | grep Mem | awk '{printf $2}'`
gsk_mem2=`free | grep Mem | awk '{printf $3}'`
gsk_check=`echo 'scale=4;'$gsk_mem2/$gsk_mem1*100 | bc`
echo "Memory 사용률= "$gsk_check "%"
echo ""
echo "---------------------------- HDD Info --------------------------------"
df -h
cat /etc/fstab | grep -v '#'
echo ""
echo ""
echo "프로세스도 추가로 확인합니까? (번호를 선택해주세요)"
echo "(1. 프로세스를 확인한다 2. 프로세스를 확인하지 않는다)"
read gsk
if [ $gsk = 1 ]; then
echo "---------------------------- Process Check --------------------------------"
ps -ef | grep -v 'grep' | egrep -i 'httpd'
ps -ef | grep -v 'grep' | egrep -i 'ssh'
exit 0
else
exit 0
fi
키보드 입력하는 시간이 걸릴 뿐 복잡한 쉘 스크립트는 아니므로 배운 내용을 종합하여 간단한 스크립트를 위와 같이 만들어볼 수 있습니다.
최대한 다양한 방식으로 만들어 보았으며 if문을 추가하여 스크립트에 적용해 보았습니다.
프로세스를 확인하는 부분에 대해서는 직접 입력 명령어를 입력하여 한줄씩 추가가 가능한데 이러한 부분은 반복적인 작업으로 매우 귀찮기에 반목문인 for문을 사용해주는게 좋습니다. for문에 대해서는 다음글에서 알아보도록 하겠습니다.
'프로그래밍 > Shell Script' 카테고리의 다른 글
쉘 스크립트 while문 (0) | 2020.11.05 |
---|---|
쉘 스크립트 for문 (0) | 2020.11.03 |
쉘 스크립트 if문 2 (0) | 2020.10.17 |
쉘 스크립트 if문 1 (0) | 2020.10.10 |
쉘 스크립트 기초 2 (0) | 2020.10.07 |