IT 이야기532 [Linux 셸 스크립트] 제어 구문 - 103 웹 서버에서 파일을 내려받아서 MD5 해시값 계산하기 1. 사용 명령어 (1) curl (2) md5sum 2. 키워드 & 사용처 (1) 키워드 내려받기, 종료 스테이터스 (2) 사용처 네트워크 경유로 파일을 취득할 때 복사에 성공했는지 확인해서 다음 명령어를 실행하고 싶을 때 사용합니다. 3. 실행 예제 $ ./andlist.sh 83036ec1109bf9770fc2d8673b545d35 sample.dat 4. 스크립트 #!/bin/sh # 내려받을 파일 URL 경로, 파일명 지정 url_path="http://www.example.org/" ① filename="sample.dat" ① # 파일 내려받기, 내려받기에 성공하면 md5 해시값 표시 # Mac/FreeBSD라면 md5sum 명령어가 아니라 md5 명령어 사용 curl -sO "${url_p.. 2021. 4. 21. [Linux 셸 스크립트] 제어 구문 - 102 스크립트를 수정해서 if문 안이 비더라도 에러가 발생하지 않게 하기 1. 사용 명령어 (1) :(널 명령어) 2. 키워드 & 사용처 (1) 키워드 if문, 널 명령어, 빈 줄 (2) 사용처 사양 변경 등으로 필요 없어진 처리를 주석 처리해서 if문 내용이 비었더라도 에러가 발생하지 않게 하고 싶을 때 사용합니다. 3. 실행 예제 $ ./if-null.sh $ &2 exit 1 fi 5. 해설 이 스크립트는 셸 변수 datafile로 지정한 데이터 파일 존재를 확인해서 파일이 있으면 현재 디렉터리에서 myapp라는 프로그램을 실행합니다. 그런데 사양이 변경되어 myapp을 실행하지 않아도 되어서 주석 처리한 결과, if문 안이 비어 에러가 발생할 때 이를 해결한다고 가정합니다. 셸 스크립트는 if문 내용이 없으면 에러가 발생합니다. 예를 들어 다음 소스는 lock.tmp라.. 2021. 4. 21. [Linux 셸 스크립트] 제어 구문 - 101 ID 컬럼을 "00001" 처럼 0으로 채운 CSV 파일에서 번호를 지정해서 값을 추출하기 1. 사용 명령어 (1) read (2) cut (3) test 2. 키워드 & 사용처 (1) 키워드 숫자값, 문자열, 0 채우기 (2) 사용처 "00001" 처럼 0으로 채운 문자열을 그대로 숫자로 다루고 싶을 때 사용합니다. 3. 실행 예제 $ cat data.csv 00001,Busan 2,Kim 3,Park 00004,Seo $ ./zero-string.sh Busan &2 ② exit 1 ② fi # CSV 파일 읽기 while read line ③ do # 각 컬럼을 cut으로 추출 id=$(echo $line | cut -f 1 -d ',') ④ name=$(echo $line | cut -f 2 -d ',') ④ # ID 컬럼이 셸 변수 match_id로 지정한 ID와 일치하면 이름 표시 .. 2021. 4. 21. [Linux 셸 스크립트] 제어 구문 - 100 강제 종료될 때까지 파일 내려받기를 반복해 통신 확인하기 1. 사용 명령어 (1) true (2) curl (3) sleep 2. 키워드 & 사용처 (1) 키워드 무한 반복, 접속 확인, 내려받기 (2) 사용처 웹 서버 확인을 계속 반복하고 싶을 때 사용합니다. 3. 실행 예제 $ ./download-loop.sh [check OK] [check OK] [check OK] [check OK] [check OK] ^C 2021. 4. 20. [Linux 셸 스크립트] 제어 구문 - 099 연속된 파일명을 가진 URL을 자동 생성해서 순서대로 내려받기 1. 사용 명령어 (1) seq (2) printf (3) curl 2. 키워드 & 사용처 (1) 키워드 연속번호, URL, 내려받기 (2) 사용처 파일명에 연속한 번호가 있는 그림 파일을 웹 서버에서 자동으로 내려받고 싶을 때 사용합니다. 3. 실행 예제 $ ./number-file.sh ${i}.txt done 파일 내려받기 확인 등의 목적으로 이런 파일을 작성하는 스크립트가 자주 사용됩니다. 이 스크립트는 필자 환경에서는 0.1초도 걸리지 않습니다. while문으로 작성해서 expr 명령어로 카운터를 늘려가면 1.2초 정도 걸립니다. 이처럼 seq 명령어로 반복을 만들면 10배 이상 빨라지게 됩니다. ①에서 내려받을 파일 URL을 지정합니다. 이때 연속 번호 부분은 %03d라는 printf 명령어로.. 2021. 4. 20. [Linux 셸 스크립트] 제어 구문 - 098 변수가 포함된 IP 주소 목록 파일을 읽어서 ping 명령어로 확인하기 1. 사용 명령어 (1) sed (2) ping 2. 키워드 & 사용처 (1) 키워드 for문, 템플릿 파일, 치환, 변수 (2) 사용처 템플릿 파일을 사용해서 네트워크 개통을 확인하고 싶을 때 사용합니다. 3. 실행 예제 $ cat ping_target.lst %ADDR_HEAD%.1 %ADDR_HEAD%.2 %ADDR_HEAD%.3 %ADDR_HEAD%.4 $ ./for_command.sh 192.168.2 [Success] ping -> 192.168.2.1 [Success] ping -> 192.168.2.2 [Failed] ping -> 192.168.2.3 [Success] ping -> 192.168.2.4 4. 스크립트 #!/bin/sh # 명령행 인수 확인 if [ -z "$1" ]; t.. 2021. 4. 19. [Linux 셸 스크립트] 셸 기능 다루기 - 097 셸 스크립트 일부에 Perl이나 Ruby 사용하기 1. 사용 명령어 (1) perl (2) nc (3) sleep 2. 키워드 & 사용처 (1) 키워드 한 줄 명령어, 펄, 루비, 난수 (2) 사용처 난수 생성 등 셸 스크립트 기능 일부로 펄이나 루비 코드를 사용하고 싶을 때 사용합니다. 3. 실행 예제 $ ./perl-oneline.sh Connection to 192.168.2.1 80 port [tcp/http] succeeded! Wait: 4 sec Connection to 192.168.2.1 80 port [tcp/http] succeeded! 4. 스크립트 #!/bin/sh # 테스트 통신할 서버 정의 ipaddr="192.168.2.1" ① port=80 ① # 1에서 10까지 정수값 난수를 펄 한 줄 명령어로 생성 waittime=$(.. 2021. 4. 19. [Linux 셸 스크립트] 셸 기능 다루기 - 096 여러 호스트에 병렬로 ping을 날려서 대기 시간 줄이기 1. 사용 명령어 (1) ping (2) wait (3) cat 2. 키워드 & 사용처 (1) 키워드 병렬 처리, 동기, 종료 (2) 사용처 여러 호스트에 ping 명령어를 실행하는 대기 시간을 줄이고자 병렬로 백그라운드 실행시키고 명령어 종료를 동기화해서 결과를 순서대로 출력하고 싶을 때 사용합니다. 3. 실행 예제 $ ./background-wait.sh PING 192.168.2.1 (192.168.2.1): 56 data bytes 64 bytes from 192.168.2.1: icmp_seq=0 ttl=255 time=3.554 ms 64 bytes from 192.168.2.1: icmp_seq=0 ttl=255 time=3.435 ms 64 bytes from 192.168.2.1: icm.. 2021. 4. 19. [Linux 셸 스크립트] 셸 기능 다루기 - 095 여러 URL 파일을 동시에 병렬로 내려받기 1. 사용 명령어 (1) curl 2. 키워드 & 사용처 (1) 키워드 백그라운드, 병렬 처리, 내려받기 (2) 사용처 대기 시간이 있는 명령어가 많아서 병렬로 실행해 전체 실행 시간을 줄이고 싶을 때 사용합니다. 3. 실행 예제 $ ./background-download.sh $ &1을 같이 사용할 때는 &를 어디에 위치시켜야 할까요? 다음처럼 백그라운드 실행을 위한 &를 제일 끝에 붙이는 것이 정답입니다. #!/bin/sh # 시간이 걸리는 명령어 long_time_program 표시 결과를 # result.log에 리다이렉트하고 백그라운드로 실행 long_time_program > result.log 2>&1 & 하지만 병렬로 프로세스를 실행하면 서버에 부담이 됩니다. 따라서 많은 처리를 백그라운드.. 2021. 4. 19. 미러링 서버에서 rsync로 자료 다운받기 미러링 서버에서 rsync로 자료를 다운받는 방법을 찾다가 알게되어 공유합니다. 우선 우리나라 미러링 서버 사이트를 알려드려요. ftp.daum.net ftp.kaist.ac.kr mirror.yongbok.net ftp.neowiz.com/pub mirror.cdnetworks.com 위의 사이트에 가서 다운로드할 자료의 상세 주소를 찾아 갑니다. 하나의 예로 CentOS 7.9 업데이트 패키지를 다운로드하는 예를 보여드립니다. 저는 ftp.kaist.ac.kr 미러 사이트를 선택했습니다. CentOS를 선택하면 버전별로 디렉터리가 보일겁니다. 전 7.9버전을 선택했습니다. updates 디렉터리를 클릭하고 x86_64 디렉터리 클릭, Packages 디렉터리를 클릭합니다. 다운로드 할 최종 디렉터리 .. 2021. 4. 16. 이전 1 ··· 6 7 8 9 10 11 12 ··· 54 다음