IT 이야기532 [Linux 셸 스크립트] 네트워크 - 055 디폴트 게이트웨이에 ping이 통하는지 확인하기(리눅스) 1. 사용 명령어 (1) route (2) awk (3) ping 2. 키워드 & 사용처 (1) 키워드 ICMP, 디폴트 게이트웨이, Default Gateway (2) 사용처 디폴트 게이트웨이르르 자동으로 얻어서 ping 명령어로 네트워크 연결을 확인하고 싶을 때 사용합니다. 3. 실행 예제 $ ./gwping-linux.sh [Syccess] ping -> 192.168.1.1 4. 스크립트 #!/bin/sh # route 명령어 출력에서 디폴트 게이트웨이 얻기 # 첫 번째 컬럼이 "0.0.0.0"인 줄의 두 번째 컬럼을 추출 gateway=$(route -n | awk '$1 == "0.0.0.0" {print $2}') ① # 디폴트 게이트웨이에 ping ping -c 1 $gateway > /d.. 2021. 3. 29. [Linux 셸 스크립트] 날짜 처리 - 054 윤년인지 확인하기 1. 사용 명령어 (1) expr (2) test (3) ls 2. 키워드 & 사용처 (1) 키워드 윤년, 나머지 (2) 사용처 2월 말에 작성된 로그 파일을 선택하고 싶을 때 사용합니다. 3. 실행 예제 $ ./leapyear.sh leap year: 2012 /var/log/myapp/access.log-20120229 4. 스크립트 #!/bin/sh # 네 자리 년도 얻기 year=$(date '+%Y') ① logfile="/var/log/myapp/access.log-" # 년도를 나눈 나머지 계산 mod1=$(expr $year % 4) ② mod2=$(expr $year %100) ② mod3=$(expr $year % 400) ② # 윤년인지 판정 if [ $mod1 -eq 0 -a $mo.. 2021. 3. 29. [Linux 셸 스크립트] 날짜 처리 - 053 한 달 전에 만든 로그 파일을 일괄 아카이브 하기 1. 사용 명령어 (1) date (2) tar 2. 키워드 & 사용처 (1) 키워드 전월, 월말 (2) 사용처 오늘 날짜에서 지난달 년월표기(YYYYMM)를 조합해서 해당 날짜가 파일명에 있는 로그 파일을 아카이브하고 싶을 때 사용합니다. 3. 실행 예제 $ ./lastmonth.sh /var/log/myapp/access.log-20210224 /var/log/myapp/access.log-20210225 /var/log/myapp/access.log-20210226 /var/log/myapp/access.log-20210227 /var/log/myapp/access.log-20210228 4. 스크립트 #!/bin/sh logdir="/var/log/myapp" # 이번달 15일 날짜 취득 this.. 2021. 3. 29. [Linux 셸 스크립트] 날짜 처리 - 052 오늘이 말일인지 판별하기 1. 사용 명령어 (1) date 2. 키워드 & 사용처 (1) 키워드 월말 (2) 사용처 오늘이 달의 마지막 날인지 스크립트에서 판정하고 싶을 때 사용합니다. 3. 실행 예제 $ ./monthday.sh 월별 리포트 작성하는 외부 스크립트 실행 4. 스크립트 #!/bin/sh tomorrow=$(date "+%d" -d '1 day') ① if [ "$tomorrow" = "01" ]; then ② # 오늘이 말일이라면 월별 리포트를 작성하는 외부 스크립트 실행 ./monthly_report.sh fi 5. 해설 이 스크립트는 현재 날짜를 판단해서 말일이면 월별 리포트를 집계하는 monthly_report.sh라는 외부 스크립트를 실행합니다. 집계 처리나 마감 처리 같이 그달의 말일만 실행하는 프로그램.. 2021. 3. 26. [Linux 셸 스크립트] 날짜 처리 - 051 date 명령어로 두 날짜를 비교하고 날짜차를 구하기 1. 사용 명령어 (1) date (2) expr 2. 키워드 & 사용처 (1) 키워드 날짜, UNIX 시간, 에포크 초 (2) 사용처 시간 문자열 둘을 비교해서 몇일 차이인지 계산하고 싶을 때 사용합니다. 3. 실행 예제 $ ./date-epoch.sh day1(2021/03/25 12:12:12): 1616728332 day2(2021/03/24 10:10:10): 1616634610 day interval: 1 4. 스크립트 #!/bin/sh # 비교할 두 날짜를 변수로 정의 day1="2021/03/25 10:10:10" ① day2="2021/03/26 12:12:12" ① # 날짜에서 epoch 초를 얻으려면 +%s 사용(리눅스) # -d 옵션은 FreeBSD/Mac에서 사용 불가 day1_e.. 2021. 3. 26. [Linux 셸 스크립트] 파일처리 - 050 sed로 파일 치환 심볼릭 링크를 실제 파일로 바꾸지 않게 하기 1. 사용 명령어 (1) sed (2) readlink 2. 키워드 & 사용처 (1) 키워드 심볼릭 링크, 파일 치환, 실제 파일 (2) 사용처 sed 명령어 -i 옵션으로 심볼릭 링크를 대상으로 할 때 사용합니다. 3. 실행 예제 $ ls -F orig/sed-symlink.sh*target.txt@ 현재 디렉터리에 심볼릭 링크 target.txt@가 있고 orig/ 디렉터리에 실제 파일이 존재함 $ ls orig/ target.txt $ ./sed-symlink.sh $ ls -F orig/sed-symlink.sh*target.txt@ $ ls -F orig/ target.txttarget.txt.bak 실제 파일이 바뀜 4. 스크립트 #!/bin/sh filename="target.txt" if .. 2021. 3. 26. [Linux 셸 스크립트] 파일처리 - 049 이중 실행이 가능한 임시 파일 작성하기 1. 사용 명령어 (1) date (2) cat 2. 키워드 & 사용처 (1) 키워드 임시 파일, 프로세스 ID (2) 사용처 스크립트를 동시에 실행할 때 임시 파일이 중복되지 않도록 하고 싶을 때 사용합니다. 3. 실행 예제 $ ./tmppid.sh Fri Mar 26 14:52:11 KST 2021 4. 스크립트 #!/bin/sh tmpfile="tmp.$$" ① date > $tmpfile ② sleep 10 cat $tmpfile ③ rm -f $tmpfile 5. 해설 이 스크립트는 프로그램에서 잠시 사용하는 임시 파일을 다룹니다. 스크립트 실행 시 date 명령어로 현재 시각을 임시 파일에 쓰고 10초 기다린 후 그 값을 파일에서 읽어서 출력합니다. 이 예제에서는 셸 변수 tmpfile로 지정.. 2021. 3. 26. [Linux 셸 스크립트] 파일처리 - 048 .svn 등 숨은 파일과 디렉터리만 나열하기 1. 사용 명령어 (1) ls (2) case 2. 키워드 & 사용처 (1) 키워드 숨김 파일, 닷 파일 (2) 사용처 숨김 파일만 대상으로 처리하고 싶을 때 사용합니다. 3. 실행 예제 $ ./dotfile.sh dot file: .bashrc dot fiel: .cshrc dot directory: .svn/ 4. 스크립트 #!/bin/sh # IFS에 줄바꿈 설정 IFS=' ① ' ① # 현재 디렉터리 아래에 있는 파일을 $filename으로 순서대로 처리 for filename in $(ls -AF) ② do case "$filename" in ③ .*/) echo "dot directory: $filename" ;; .*) echo "dot file: $filename" ;; esac done .. 2021. 3. 26. [Linux 셸 스크립트] 파일처리 - 047 바이너리 파일에 포함된 문자열 열기 1. 사용 명령어 (1) strings (2) grep 2. 키워드 & 사용처 (1) 키워드 바이너리 파일, 검색, 실행 파일 (2) 사용처 에러 메시지를 바탕으로 그 메시지를 출력하는 명령어를 찾고 싶을 때 사용합니다. 3. 실행 예제 $ ./strings.sh /home/park/myapp/bin/start: error: Unknown Error /home/park/myapp/bin/kill: Unknown Error at %s /home/park/myapp/bin/kill: Unknown Error at %s:%d 4. 스크립트 #!/bin/sh # 검색할 에러 메시지 message="Unknown Error" strings -f /home/park/myapp/bin/* | grep "$messag.. 2021. 3. 26. [Linux 셸 스크립트] 파일처리 - 046 작업 파일을 만들 때 내용을 읽지 못하도록 보안 대책 세우기 1. 사용 명령어 (1) umask 2. 키워드 & 사용처 (1) 키워드 보안, 권한, umask (2) 사용처 스크립트에서 권한을 지정해서 파일을 작성하고 싶을 때 사용합니다. 3. 실행 예제 $ ./umask.sh $ ls -l total 8 -rw------- 1 park 48 Mar 26 12:33 idinfo.tmp -rwxr-xr-x 1 park 39 Mar 26 12:32 umask.sh 4. 스크립트 #!/bin/sh umask 077 ① # echo 명령어 출력을 권한 600인 임시 파일로 작성 echo "ID: abcd123456" > idinfo.tmp ② 5. 해설 이 스크립트는 umask 명령어오 임시 파일 권한을 설정합니다. 이러면 다른 사람이 파일 내용을 보는 걸 막아서 보안을.. 2021. 3. 26. 이전 1 ··· 11 12 13 14 15 16 17 ··· 54 다음