하트위키
최근 변경
최근 토론
임의 문서
도구
최근 변경
Linux Script 작성 실습
(r15 RAW)
[목차] == 개요 == 시스템 엔지니어링 1차 과제 중 Linux Script 작성 실습과 관련된 문서이다. == 제 0과제 == scp 명령어 이용해 과제 수행에 필요한 파일들을 받아오는 과제이다. scp 사용법은 아래와 같다. [br] ># scp 원격ID@원격서버IP:파일위치 받는위치 >Ex) scp root@172.16.48.201:"/home/test/{test1[20250109].txt,test2.sh,test[3].log,testfile,}" /home/test_user 위 예시 명령어 확인 시 파일을 한번에 받아오기 위해 중괄호를 추가했고 파일명 중 대괄호가 포함되어 있어 쌍따옴표를 넣어줬다. ---- 사용 명령어 및 함수 : scp == 제 1과제 == 2개의 파일 리스트를 비교해 같은 내용이 있는 라인을 출력하는 과제이다. diff 명령어를 사용해 중복된 라인을 출력 후 파일에 넣도록 스크립트를 작성했다. [br] > diff "$FILE1" "$FILE2" | grep '^<' | sed 's/^< //' >> "$OUTPUT_FILE" 명령어 확인 시 스크립트 파일에서 특수기호 "^<" 사용을 위해 따옴표를 넣어줬다. ---- 사용 명령어 및 함수 : grep, diff, sed ===# 제 1과제 출력 결과 #=== 아래 내용은 두 파일의 같은 컨텐츠 리스트를 출력한 결과입니다. {{{H0102023FOD0308030.mpg H0602024FOD0823006.mpg H0602024FOD0823007.mpg H0602024FOD0823008.mpg H0602024FOD0823009.mpg H0602024FOD0823010.mpg H0602024FOD0823011.mpg H0602024FOD0823012.mpg H0602024FOD0823013.mpg H0602024FOD0823014.mpg H0602024FOD0823015.mpg H0602024FOD0823016.mpg H0602024FOD0823017.mpg HCBCASD201229.mpg HCBFOHD210120.mpg HCXNFHD200319.mpg HCYLVHD200529.mpg M0026360.mpg M0026361.mpg M0026362.mpg M0026363.mpg M0026364.mpg M0026365.mpg M5245079.mpg M5245086.mpg M5245087.mpg M5245089.mpg M5245090.mpg M5245094.mpg}}} == 제 2과제 == 대용량 파일을 비교해 공통으로 존재 하는것과 하지 않는 라인을 각각 다른 파일에 저장하는 과제이다. diff 명령어를 사용해 각각 다른 파일에 저장하도록 스크립트를 작성했다. [br] > diff "$FILE1" "$FILE2" | grep '^>' | sed 's/^> //' | awk '{print $1}' | grep -v 'filename' >> "$EXIST_FILE" > diff "$FILE1" "$FILE2" | grep '^<' | sed 's/^< //' | awk -F '[,\t ]+' '{print $1}' >> "$NOT_EXIST_FILE" 위 명령어 확인 시 제 1과제 명령어와[*1 diff "$FILE1" "$FILE2" | grep '^<' | sed 's/^< //' >> "$OUTPUT_FILE"] 비슷하지만, awk를 추가해 필요한 정보만 걸러서 저장하도록 했다. 중복되는 컨텐츠 리스트와 중복되지 않는 리스트를 각각 저장하도록했다. ---- 사용 명령어 및 함수 : grep, sed, awk ===# 제 2과제 출력 결과 #=== 아래 내용은 대용량 파일 중 비교파일에 존재하는 리스트를 출력한 결과입니다. {{{## 공통으로 존재하는 리스트 출력 결과 ## M5292473.mpg M5268158.mpg M5293857.mpg M5253970.mpg M5270540.mpg M5301053.mpg M5295048.mpg M5218576.mpg M5246713.mpg...}}} 아래 내용은 대용량 파일 중 비교파일에 존재하지 않는 리스트를 출력한 결과입니다. {{{## 존재하지 않는 리스트 출력 결과 ## historyheader:1731900096 .a.swp 1sec_110324.mpg 1sec_111227.mpg H0102022FOD0126015.mpg H0102022FOD0801017.mpg H0102022FOD0818015.mpg H0102022FOD1109013.mpg H0102022FOD1206008.mpg H0102022FOD1212004.mpg H0102022FOD1212007.mpg H0102022FOD1228018.mpg H0102023FOD0102017.mpg H0102023FOD0118010.mpg H0102023FOD0203014.mpg H0102023FOD0206017.mpg H0102023FOD0214006.mpg H0102023FOD0216014.mpg H0102023FOD0223005.mpg H0102023FOD0302030.mpg H0102023FOD0308015.mpg H0102023FOD0308030.mpg H0102023FOD0309006.mpg}}} == 제 3과제 == 파일에 기록된 시간을 보기 편하게 변환해 별도 파일에 저장하는 과제이다. [br] > cat "$FILE1" | grep -v history | awk -F ',' '{print $1 "," strftime("%Y-%m-%d %H:%M:%S", $2)}' >> $EXIST_FILE strftime 함수를 이용해 파일 내 쉼표 2번째의 있는 텍스트(날짜)를 보기편하게(yyyy-mm-dd hh-mm-ss) 변환한다. || AS-IS || TO-BE || || 1721693207 || 2024-07-09 09:16:44 || ---- 사용 명령어 및 함수 : grep, sed, strftime ===# 제 3과제 출력 결과 #=== 아래 내용은 기존 파일입수 시간을 변환한 결과이다. {{{1sec_110324.mpg,2016-12-08 16:44:16 1sec_111227.mpg,2020-06-05 14:38:59 H0102022FOD0126015.mpg,2023-09-21 19:39:20 H0102022FOD0801017.mpg,2023-10-20 13:40:52 H0102022FOD0818015.mpg,2023-12-27 17:45:50 H0102022FOD1109013.mpg,2023-09-19 11:21:30 H0102022FOD1206008.mpg,2023-11-14 17:07:44 H0102022FOD1212004.mpg,2023-09-25 17:47:41 H0102022FOD1212007.mpg,2023-10-24 13:06:43 H0102022FOD1228018.mpg,2023-09-19 16:16:59 H0102023FOD0102017.mpg,2023-09-20 09:59:54 H0102023FOD0118010.mpg,2023-08-07 16:36:09 H0102023FOD0203014.mpg,2023-08-29 16:25:55}}} == 제 4과제 == 파일내 bitrate 값의 따라 각각 다른 파일의 저장하는 과제이다. if문을 통해 6Mbps인 경우 4~6M hd_cnt++; hd_sum += bibps인 경우 그 외 데이터를 각각 저장 할 수 있도록 작성했다. {{{if (bitrate >= 6000000) { print out >> "HD.txt";trate; } }}}bitrate 값 마다 분리 해주는 구문이다. 다른 값들도 구문과 같이 각각 분리해 준다. {{{if (hd_cnt > 0) { res = sprintf("total : %d, bitrate avg : %.0f", hd_cnt, hd_sum / hd_cnt); print res >> "HD.txt"; } }}}파일 마지막 줄에 나눈 파일 마다의 총 파일의 개수와 평균 bitrate를 계산한 값을 출력하도록했다. 다른 값들도 구문과 같이 총파일 개수와 평균 bitrate를 출력한다. ---- 사용 명령어 및 함수 : print , sprintf ===# 제 4과제 출력 결과 #=== 아래 내용은 Bitrate가 6Mbps 이상인 컨텐츠 리스트 결과이다. {{{## HD.txt ## 1sec_110324.mpg,2016-12-08 16:44:16 1sec_111227.mpg,2020-06-05 14:38:59 H0102022FOD0126015.mpg,2023-09-21 19:39:20 H0102022FOD0801017.mpg,2023-10-20 13:40:52 H0102022FOD0818015.mpg,2023-12-27 17:45:50 H0102022FOD1109013.mpg,2023-09-19 11:21:30 H0102022FOD1206008.mpg,2023-11-14 17:07:44 H0102022FOD1212004.mpg,2023-09-25 17:47:41 H0102022FOD1212007.mpg,2023-10-24 13:06:43 H0102022FOD1228018.mpg,2023-09-19 16:16:59}}} 아래 내용은 Bitrate가 4~6Mbps 사이인 컨텐츠 리스트 결과이다. {{{## SD.txt ## HCAAKHD200921.mpg,1600649855,5905200 HCAARHD200921.mpg,1600667966,5905200 HCAAWHD200923.mpg,1600824404,5905200 HCAAXHD200923.mpg,1600824580,5905200 HCABMHD200925.mpg,1601012433,5905200 HCADIHD200928.mpg,1601274244,5905200 HCAEDHD200929.mpg,1601341620,5905200 HCAEEHD200929.mpg,1601342072,5905200}}} 아래 내용은 그 외 Bitrate의 컨텐츠 리스트 결과이다. {{{## check.txt ## .a.swp,1460369255,0 1sec_110324.mpg,1481183056,3684427 HCAAKSD200921.mpg,1600649698,3757500 HCAARSD200921.mpg,1600667884,3757500 HCAAWSD200923.mpg,1600824217,3757500 HCAAXSD200923.mpg,1600824091,3757500 HCABMSD200925.mpg,1601012525,3757500 HCADISD200928.mpg,1601274635,3757500 HCAEDSD200929.mpg,1601341711,3757500 HCAEESD200929.mpg,1601341883,3757500}}} == 제 5과제 == 입력한 용량 값 만큼의 컨텐츠 크기인 파일만 출력하는 과제이다. [br] > grep "^H" hitcount.txt H로 시작하는 컨텐츠 파일만 조회 하기 위해 grep에 ^를 추가해 준다. [br] > current_gb = $4/1024/1024/1024; 리스트 파일에 있는 컨텐츠 별 용량을 구해 GB로 변환 해준다. {{{if (current_gb < limit) { printf "%s, %s, %s, %.2f GB, %s\n", $1, v$2, $3, current_gb, $5 } }}}if문을 통해 입력한 GB 값과 파일리스트의 GB변환값을 비교해 미만인 파일들을 출력해준다. ---- 사용 명령어 및 함수 : read, sprintf, grep, awk ===# 제 5과제 출력 결과 #=== 아래 내용은 GB 값을 입력 받아 1GB미만 컨텐츠 리스트를 출력한 결과이다. {{{[root@testServer work5]# ./event_show.sh Input SIZE(GB) : 1 H0102022FOD0126015.mpg, 1695292760, 6017250, 0.83 GB, 192.168.41.102 192.168.41.110 H0102022FOD0801017.mpg, 1697776852, 6017250, 0.83 GB, 192.168.41.181 192.168.41.182 H0102022FOD0818015.mpg, 1703666750, 6017250, 0.83 GB, 192.168.41.181 192.168.41.182 H0102022FOD1109013.mpg, 1695090090, 6017250, 0.04 GB, 192.168.41.102 192.168.41.183 H0102022FOD1206008.mpg, 1699949264, 6017250, 0.83 GB, 192.168.41.118 192.168.41.183 H0102022FOD1212004.mpg, 1695631661, 6017250, 0.83 GB, 192.168.41.114 192.168.41.183... }}} 아래 내용은 GB 값을 입력 받아 0.5GB미만 컨텐츠 리스트를 출력한 결과이다. {{{[root@testServer work5]# ./event_show.sh Input SIZE(GB) : 0.5 H0102022FOD1109013.mpg, 1695090090, 6017250, 0.04 GB, 192.168.41.102 192.168.41.183 H0102023FOD0321010.mpg, 1690260213, 6017250, 0.42 GB, 192.168.41.181 192.168.41.182 H0102023FOD0403005.mpg, 1708304121, 6017250, 0.42 GB, 192.168.41.117 192.168.41.118 H0102023FOD0531006.mpg, 1714728859, 6017250, 0.42 GB, 192.168.41.181 192.168.41.182 H0102023FOD0614002.mpg, 1714729449, 6017250, 0.42 GB, 192.168.41.181 192.168.41.182 H0102024FOD0523010.mpg, 1716451462, 6017250, 0.42 GB, 192.168.41.118 192.168.41.182...}}} == 제 6과제 == 파일이 복사된 서버의 IP 리스트의 개수와 파일이 복사된 개수를 비교해 두 값이 다른걸 출력하는 과제이다. [br] > split($5, ips, " "); > ip_cnt = length(ips); > copy_cnt = $6; split 함수를 이용해 IP 리스트 개수를 출력, 복사된 개수는 이미 Count되어 있어 값을 가져 올 수 있다. [br] {{{if (ip_cnt != copy_cnt) { printf "불일치: %s (실제:%d, 기록:%d)\n", $1, ip_cnt, copy_cnt } }}}if문을 통해 불일치 값을 출력해 남겨준다. ---- 사용 명령어 및 함수 : split, if, printf ===# 제 6과제 출력 결과 #=== 아래 내용은 복사된 서버의 IP 개수와 복사된 개수를 비교해 불일치 한 것을 출력한 결과이다. {{{불일치: H0602024FOD0611015.mpg (실제:2, 기록:3) 불일치: M4330604.mpg (실제:2, 기록:3) 불일치: M4622038.mpg (실제:2, 기록:3) 불일치: M4726665.mpg (실제:2, 기록:3) 불일치: M4726666.mpg (실제:2, 기록:3) 불일치: M5224716.mpg (실제:3, 기록:4) 불일치: M5263260.mpg (실제:3, 기록:4) 불일치: M5293015.mpg (실제:3, 기록:4) 불일치: M5293063.mpg (실제:3, 기록:4) 불일치: M5293072.mpg (실제:3, 기록:4) 불일치: M5293078.mpg (실제:3, 기록:4) 불일치: M5293093.mpg (실제:3, 기록:4) 불일치: M5293147.mpg (실제:3, 기록:4)}}} == 제 7과제 == EventLog에서 SeesionID로 조회해 관련로그를 출력 및 관련 컨텐츠 파일을 다른 파일에서도 조회해 출력하는 과제이다. [br] > grep "$sid" EventLog\[20241118\].log SessionID를 입력받아 관련 로그를 조회한다. [br] > grep "$sid" EventLog\[20241118\].log | grep ".mpg" | sed -E 's/.*[[,/ ]([^,/[ ]+\.mpg).*/\1/' | sort -u mpg 파일을 다른 파일에서도 조회 하기 위해 mpg 목록들을 출력한다. ---- 사용 명령어 및 함수 : read, grep, if, sed, sort, while ===# 제 7과제 출력 결과 #=== 아래 내용은 입력받은 sessionID를 조회해 관련로그 및 mpg 파일 리스트를 출력한 결과이다. {{{[root@testServer work7]# ./event_show.sh 조회할 sessionID : e0072144-8c91-4e15-bfb6-2c2b746008bc 0x8ffff,1,1731855612,90,Received Request OnDemandSession (SessionID [e0072144-8c91-4e15-bfb6-2c2b746008bc/99206], StreamID [0786e652-e341-4167-af1f-b8f863a6661b], dest IP [172.16.2.143], dest port [263], peerip [192.168.43.19], file [/data2/M4991043.mpg]) 0x2ffff,1,1731855612,90,RTSP::Reserved Session(e0072144-8c91-4e15-bfb6-2c2b746008bc) Stream(0786e652-e341-4167-af1f-b8f863a6661b) : file(M4991043.mpg), request file(M4991043.mpg) 0x40ffff,1,1731855612,event_type[AdverTisement], session(e0072144-8c91-4e15-bfb6-2c2b746008bc) : Get Advertise. - Type(ADM), Advertise(1sec_111227.mpg[-1*1*Tracking=00000000-0000-0000-0000-000000000000],HCDSUHD241018.mpg[-1*1*Tracking=2c8ae4c09ca240f780ec7ec2a49fa226],HCDTZHD241113.mpg[-1*1*Tracking=0f4c8e29bde6404cb6b816e9a956293e]) 0x40ffff,4,1731855612,event_type[AdverTisement], session(e0072144-8c91-4e15-bfb6-2c2b746008bc) : Disabled ADV schedule parsing for resume. 0x10001,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855612,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] 0x4ffff,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,Report Connection Established, SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] 0x4ffff,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,SET_PARAMETER request for smart_card_id -> 17605388 SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] 0x4ffff,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,SET_PARAMETER request for pincode -> UMP, UMP_1.0.0QR2 SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] 0x4ffff,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,SET_PARAMETER request for menuid -> 6807005 SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] 0x4ffff,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,Advertise File(/data1/1sec_111227.mpg) Start, SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc]. StreamID[0786e652-e341-4167-af1f-b8f863a6661b] 0x10100,1,1731855612,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855612,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] seek offset : 1692 0x10200,1,1731855614,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855614,event_type[AdverTisement], SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], bandwidth[6073800], clientid[17605388], userid[], bitrate[6073800], systemtype[131072], videotype[1024], audiotype[4], filesize[1898236], filepath[/data1], filename[1sec_111227.mpg], filepath_attr[0], offset[1898236], result_type[1], params[menuid: 6807005], scheduletime[-1], mainfile[M4991043.mpg], adv_info[Tracking=00000000-0000-0000-0000-000000000000], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[cc57bb62-ad8f-4057-bba0-146ba302ea29], vod_ip[192.168.41.151] 0x4ffff,1,1731855614,90,99206,10.183.5.100,M4991043.mpg,Advertise File(/data1/HCDSUHD241018.mpg) Start SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] 0x10200,1,1731855631,90,99206,10.183.5.100,M4991043.mpg,2,1731855614,1731855631,event_type[AdverTisement], SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], bandwidth[5905200], clientid[17605388], userid[], bitrate[5905200], systemtype[131072], videotype[1024], audiotype[4], filesize[12154952], filepath[/data1], filename[HCDSUHD241018.mpg], filepath_attr[0], offset[12154952], result_type[1], params[menuid: 6807005], scheduletime[-1], mainfile[M4991043.mpg], adv_info[Tracking=2c8ae4c09ca240f780ec7ec2a49fa226], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[cc57bb62-ad8f-4057-bba0-146ba302ea29], vod_ip[192.168.41.151] 0x4ffff,1,1731855631,90,99206,10.183.5.100,M4991043.mpg,Advertise File(/data1/HCDTZHD241113.mpg) Start SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] 0x10200,1,1731855647,90,99206,10.183.5.100,M4991043.mpg,2,1731855631,1731855647,event_type[AdverTisement], SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], bandwidth[5905200], clientid[17605388], userid[], bitrate[5905200], systemtype[131072], videotype[1024], audiotype[4], filesize[12154952], filepath[/data1], filename[HCDTZHD241113.mpg], filepath_attr[0], offset[12154952], result_type[1], params[menuid: 6807005], scheduletime[-1], mainfile[M4991043.mpg], adv_info[Tracking=0f4c8e29bde6404cb6b816e9a956293e], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[cc57bb62-ad8f-4057-bba0-146ba302ea29], vod_ip[192.168.41.151] 0x10004,1,1731855674,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855674,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], Scale 2 0x10004,1,1731855676,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855676,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], Scale 4 0x10004,1,1731855677,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855677,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], Scale 8 0x10080,1,1731855718,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855718,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] 0x10002,1,1731855719,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855719,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b] 0x10200,1,1731855719,90,99206,10.183.5.100,M4991043.mpg,2,1731855612,1731855719,SessionID[e0072144-8c91-4e15-bfb6-2c2b746008bc], StreamID[0786e652-e341-4167-af1f-b8f863a6661b], bandwidth[6073800], clientid[17605388], userid[], bitrate[6073800], systemtype[131072], videotype[1024], audiotype[4], filesize[3219443036], filepath[/data2], filename[M4991043.mpg], filepath_attr[0], offset[240276220], result_type[1], params[menuid: 6807005], insert_sent[26208140], bytes_sent[79849992], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[cc57bb62-ad8f-4057-bba0-146ba302ea29], vod_ip[192.168.41.151] ===== file select ===== 1sec_111227.mpg file(M4991043.mpg HCDSUHD241018.mpg HCDTZHD241113.mpg M4991043.mpg ===== select hitcount ===== 1sec_111227.mpg,1591335539,6073800,1898236,192.168.41.101 192.168.41.102 192.168.41.103 192.168.41.108 192.168.41.109 192.168.41.110 192.168.41.111 192.168.41.112 192.168.41.113 192.168.41.114 192.168.41.116 192.168.41.117 192.168.41.118 192.168.41.181 192.168.41.182 192.168.41.183,16,0,0,0=0 0 HCDSUHD241018.mpg,1729235522,5905200,12154952,192.168.41.101 192.168.41.102 192.168.41.103 192.168.41.108 192.168.41.109 192.168.41.110 192.168.41.111 192.168.41.112 192.168.41.113 192.168.41.114 192.168.41.116 192.168.41.117 192.168.41.118 192.168.41.181 192.168.41.182 192.168.41.183,16,0,0,0=0 0 HCDTZHD241113.mpg,1731485917,5905200,12154952,192.168.41.101 192.168.41.102 192.168.41.103 192.168.41.108 192.168.41.109 192.168.41.110 192.168.41.111 192.168.41.112 192.168.41.113 192.168.41.114 192.168.41.116 192.168.41.117 192.168.41.118 192.168.41.181 192.168.41.182 192.168.41.183,16,0,0,0=0 0}}} == 제 8과제 == EventLog에서 SeesionID로 조회해 관련로그를 출력 및 관련 컨텐츠 파일을 다른 파일에서도 조회해 출력하는 과제이다. [br] > grep "$sid" EventLog\[20241118\].log SessionID를 입력받아 관련 로그를 조회한다. [br] > grep "$sid" EventLog\[20241118\].log | grep ".mpg" | sed -E 's/.*[[,/ ]([^,/[ ]+\.mpg).*/\1/' | sort -u mpg 파일을 다른 파일에서도 조회 하기 위해 mpg 목록들을 출력한다. [br] > start_ts=$(date -d "$LOG_DATE $start_input" +%s) > Ex) inout = 10 > 변환 후 --> 10:30:00 입력받은 시간을 변환을 하기 위한 구문이다. [br] > awk -F',' -v s="$start_ts" -v e="$end_ts" '$3 >= s && $3 <= e' "$FILE" 입력한 시작 시간보다 큰 값과 입력한 종료 시간보다 작거나 같은 값을 출력한다. ---- 사용 명령어 및 함수 : read, awk, sed ===# 제 8과제 출력 결과 #=== 아래 내용은 시간을 입력받아 해당 범위 내 로그를 출력한 결과이다. {{{[root@testServer work8]# ./select_hour.sh Start Hour : 11:00 End Hour : 11:01 0x10004,1,1731895205,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895205,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 2 0x10004,1,1731895206,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895206,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 4 0x10004,1,1731895206,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895206,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 8 0x10004,1,1731895207,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895207,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 16 0x10040,1,1731895217,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895217,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02] 0x10080,1,1731895221,90,99462,10.158.154.220,M4994600.mpg,2,1731893212,1731895221,SessionID[272b2c9d-2288-4cf4-bb07-2ee31800341c], StreamID[1b803e81-52a9-4a1e-bd9a-0580452904c0] 0x10002,1,1731895221,90,99462,10.158.154.220,M4994600.mpg,2,1731893212,1731895221,SessionID[272b2c9d-2288-4cf4-bb07-2ee31800341c], StreamID[1b803e81-52a9-4a1e-bd9a-0580452904c0] 0x10200,1,1731895221,90,99462,10.158.154.220,M4994600.mpg,2,1731893212,1731895221,SessionID[272b2c9d-2288-4cf4-bb07-2ee31800341c], StreamID[1b803e81-52a9-4a1e-bd9a-0580452904c0], bandwidth[6073800], clientid[], userid[], bitrate[6073800], systemtype[131072], videotype[1024], audiotype[4], filesize[3836009716], filepath[/data1], filename[M4994600.mpg], filepath_attr[0], offset[3461847792], result_type[1], params[], insert_sent[25125448], bytes_sent[1524970460], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[98392774-61ad-4435-8cb2-03641516314c], vod_ip[192.168.41.151] 0x8ffff,1,1731895221,90,SendRequestStreamStateNotification count : 1 0x10004,1,1731895224,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895224,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 2 0x10004,1,1731895224,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895224,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 4 0x10004,1,1731895225,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895225,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 8 0x10004,1,1731895225,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895225,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 16 0x10040,1,1731895227,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895227,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02] 0x8ffff,1,1731895236,90,Received Request OnDemandSession (SessionID [093d0146-5993-43a8-bbb7-5a9ca03b9595/88470], StreamID [85629a14-9705-4dd3-9e92-76ae19979d57], dest IP [172.16.132.139], dest port [270], peerip [192.168.43.19], file [/data1/M4337604.mpg]) 0x2ffff,1,1731895236,90,RTSP::Reserved Session(093d0146-5993-43a8-bbb7-5a9ca03b9595) Stream(85629a14-9705-4dd3-9e92-76ae19979d57) : file(M4337604.mpg), request file(M4337604.mpg) 0x40ffff,1,1731895236,event_type[AdverTisement], session(093d0146-5993-43a8-bbb7-5a9ca03b9595) : Get Advertise. - Type(ADM), Advertise(1sec_111227.mpg[-1*1*Tracking=00000000-0000-0000-0000-000000000000],HCDTWHD241107.mpg[-1*1*Tracking=0752fe98edea4202a62038535409fa75]) 0x40ffff,4,1731895236,event_type[AdverTisement], session(093d0146-5993-43a8-bbb7-5a9ca03b9595) : Disabled ADV schedule parsing for resume. 0x10001,1,1731895236,90,88470,10.155.150.52,M4337604.mpg,2,1731895236,1731895236,SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595], StreamID[85629a14-9705-4dd3-9e92-76ae19979d57] 0x8ffff,1,1731895236,90,SendRequestStreamStateNotification count : 1 0x4ffff,1,1731895236,90,88470,10.155.150.52,M4337604.mpg,Report Connection Established, SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595], StreamID[85629a14-9705-4dd3-9e92-76ae19979d57] 0x4ffff,1,1731895236,90,88470,10.155.150.52,M4337604.mpg,Advertise File(/data1/1sec_111227.mpg) Start, SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595]. StreamID[85629a14-9705-4dd3-9e92-76ae19979d57] 0x10100,1,1731895236,90,88470,10.155.150.52,M4337604.mpg,2,1731895236,1731895236,SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595], StreamID[85629a14-9705-4dd3-9e92-76ae19979d57] seek offset : 4136 0x8ffff,1,1731895236,90,Received Request OnDemandSession (SessionID [b70923f0-6103-4c56-8d84-4e365348b86f/105693], StreamID [05f78147-affe-44bb-912b-52dcd3b7e92a], dest IP [172.16.98.130], dest port [264], peerip [192.168.43.19], file [/data1/M5260132.mpg]) 0x2ffff,1,1731895236,90,RTSP::Reserved Session(b70923f0-6103-4c56-8d84-4e365348b86f) Stream(05f78147-affe-44bb-912b-52dcd3b7e92a) : file(M5260132.mpg), request file(M5260132.mpg) 0x40ffff,1,1731895236,event_type[AdverTisement], session(b70923f0-6103-4c56-8d84-4e365348b86f) : Get Advertise. - Type(ADM), Advertise(1sec_111227.mpg[-1*1*Tracking=00000000-0000-0000-0000-000000000000],HCDTXHD241108.mpg[-1*1*Tracking=c746af766af2435d9f169357b75befcb],HCDSUHD241018.mpg[-1*1*Tracking=5d90d1dbd138454e9784a68fe9411456],HCDUAHD241113.mpg[-1*1*Tracking=71c49e0325354c3c99d6bdd85833c5f4],HCDTZHD241113.mpg[-1*1*Tracking=713d45b85e4249c79a32eb28e1da454b]) 0x40ffff,4,1731895236,event_type[AdverTisement], session(b70923f0-6103-4c56-8d84-4e365348b86f) : Disabled ADV schedule parsing for resume. 0x10001,1,1731895236,90,105693,10.148.69.219,M5260132.mpg,2,1731895236,1731895236,SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] 0x4ffff,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,Report Connection Established, SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] 0x4ffff,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,SET_PARAMETER request for smart_card_id -> 17709151 SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] 0x4ffff,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,SET_PARAMETER request for pincode -> UMP, UMP_1.0.0QR2 SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] 0x4ffff,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,SET_PARAMETER request for menuid -> 9955176 SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] 0x4ffff,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,Advertise File(/data1/1sec_111227.mpg) Start, SessionID[b70923f0-6103-4c56-8d84-4e365348b86f]. StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] 0x10100,1,1731895237,90,105693,10.148.69.219,M5260132.mpg,2,1731895236,1731895237,SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] seek offset : 1692 0x10200,1,1731895237,90,88470,10.155.150.52,M4337604.mpg,2,1731895236,1731895237,event_type[AdverTisement], SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595], StreamID[85629a14-9705-4dd3-9e92-76ae19979d57], bandwidth[6073800], clientid[], userid[], bitrate[6073800], systemtype[131072], videotype[1024], audiotype[4], filesize[1898236], filepath[/data1], filename[1sec_111227.mpg], filepath_attr[0], offset[1898236], result_type[1], params[], scheduletime[-1], mainfile[M4337604.mpg], adv_info[Tracking=00000000-0000-0000-0000-000000000000], vod_request_meta_info[], startoffset[4136], resetup[0], vod_request_id[ddc5b69e-fa0c-4f63-8ba7-67f6daa5424a], vod_ip[192.168.41.151] 0x4ffff,1,1731895237,90,88470,10.155.150.52,M4337604.mpg,Advertise File(/data1/HCDTWHD241107.mpg) Start SessionID[093d0146-5993-43a8-bbb7-5a9ca03b9595], StreamID[85629a14-9705-4dd3-9e92-76ae19979d57] 0x10200,1,1731895238,90,105693,10.148.69.219,M5260132.mpg,2,1731895237,1731895238,event_type[AdverTisement], SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a], bandwidth[6073800], clientid[17709151], userid[], bitrate[6073800], systemtype[131072], videotype[1024], audiotype[4], filesize[1898236], filepath[/data1], filename[1sec_111227.mpg], filepath_attr[0], offset[1898236], result_type[1], params[menuid: 9955176], scheduletime[-1], mainfile[M5260132.mpg], adv_info[Tracking=00000000-0000-0000-0000-000000000000], vod_request_meta_info[], startoffset[1692], resetup[0], vod_request_id[2e7f5918-a7ed-4b7b-9e2c-0815239c68ce], vod_ip[192.168.41.151] 0x4ffff,1,1731895238,90,105693,10.148.69.219,M5260132.mpg,Advertise File(/data1/HCDTXHD241108.mpg) Start SessionID[b70923f0-6103-4c56-8d84-4e365348b86f], StreamID[05f78147-affe-44bb-912b-52dcd3b7e92a] 0x8ffff,1,1731895241,90,SendRequestStreamStateNotification count : 1 0x10004,1,1731895259,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895259,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 2 0x10004,1,1731895259,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895259,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 4 0x10004,1,1731895260,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895260,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 8 0x10004,1,1731895260,90,87860,10.146.69.251,M4805498.mpg,2,1731894915,1731895260,SessionID[5e567417-b10e-4cb3-a80e-30105ad8a8c7], StreamID[fa70b4e0-a3c3-4649-87b7-464d75d27b02], Scale 16}}}
Liberty
|
the tree