Programming/Bash Shell Script 21

[Bash Shell Script] 쉘 스크립트 도메인 인증서 만료 날짜 불러오기(bash shell domain certificate)

※ 해당 포스팅은 https://nirsa.tistory.com/318?category=861480 와 연계하여 사용 합니다. 도메인의 인증서 만료 날짜를 자동으로 가져와 license 파일을 업데이트하기 위하여 사용 합니다. 그 외 사용 목적으로 사용할 예정인 경우 스크립트 내용을 잘 확인 바랍니다. 쉘 스크립트 도메인 인증서 갱신 날짜 불러오기(bash shell domain certificate) 이전 포스팅에 추가하여 쉘스크립트 도메인 인증서 갱신 날짜를 불러와 자동으로 라이센스 파일에 내용을 변경 해주는 스크립트 입니다. "YOUR_LICENSE_FILE_PATH" , "YOUR_DOMAIN_URL" 부분은 본인의 환경에 맞게 변경 해주어야 합니다. 기타 자세한 내용은 추후 추가 예정 입니다. ..

[Bash Shell Script] 쉘 스크립트 파일 2개를 불러와 key-value 형태로 변환 (bash shell script key-value, bash shell script map)

쉘 스크립트 파일 2개를 불러와 key-value 형태로 변환 (bash shell script key-value, bash shell script map) 아래와 같은 파일이 있을 때 쉘 스크립트의 map을 사용하여 key : key1 , value : value1 형태로 출력하는 코드 입니다. #!/bin/bash ## 파일을 읽어 배열 형태로 저장 key_list=(`cat /root/test1`) value_list=(`cat /root/test2`) ## 아래 코드 실행 중 길이를 넘어 에러를 발생하므로 key_list, value_list 측정 길이에서 -1 KEY_EXPR=`expr ${#key_list[@]} - 1` VALUE_EXPR=`expr ${#value_list[@]} - 1` ..

[Bash Shell Script] 쉘 스크립트 라이센스 만료 날짜 관리 프로그램 만들기 (bash shell script license management)

쉘 스크립트 라이센스 만료 날짜 관리 프로그램 만들기 (bash shell script license management) 업무에 필요한 라이센스 날짜를 관리해주는 프로그램 입니다. 사실 관리보다는 라이센스 만료일 전(아래 예시는 1달전과 일주일 전)에 라이센스 만료가 다가오고 있음을 경고 해주는 메일을 발송하는 스크립트 입니다. 테스트 환경은 다음과 같으며, sendmail 설치 및 설정이 되어있어야 합니다. (sendmail 구축 방법 링크는 추후 개시할 예정) OS : CentOS 7.9 2009 Tools : sendmail-8.14.7-6.el7.x86_64 Linux 시간 설정이 재대로 되어 있는지 확인 필요 가장 먼저는 편한 위치에 아래와 같이 파일을 생성 합니다. 저는 /test/licen..

[Bash Shell Script] (연습 예제) CP 명령어 사용 시 중복된 파일의 이름을 자동으로 변경하기

(연습 예제) CP 명령어 사용 시 중복된 파일의 이름을 자동으로 변경하기 배시 쉘 스크립트 연습 예제 입니다. 아래와 같은 상황에서 중복된 파일의 이름을 자동으로 변경해주는 스크립트를 만드는것이 목표 입니다. /root/test 디렉토리의 jpg 파일을 /root/data/ 으로 복사 /root/test2 디렉토리의 jpg 파일을 /root/data/ 으로 복사 test 디렉토리의 파일과, test2 디렉토리의 파일 중 test1.jpg ~ test5.jpg 파일명이 같음 이러한 문제를 해결하기 위해 고민한 부분은 크게 다음과 같습니다. 파일명을 어떻게 바꿔야 할까? → 랜덤 문자열 생성 파일명을 변경 시 경로 제외를 어떻게 할까? → awk로 마지막 레코드만 출력 후 변수에 저장 쉘 스크립트에서 cp..

[Bash Shell Script] CentOS rm 명령어 경고 문구 출력하기 (예시)

CentOS rm 명령어 경고 문구 출력하기 (예시) - 사전 작업 아래와 같이 스크립트를 이용해 rm 명령어 사용 시 경고 문구를 출력하기 위해서는 사전 작업이 필요로 합니다. 테스트 환경 : CentOS 7.8 # 스크립트 적용을 위해 rm 명령어 변경 mv /usr/bin/rm /usr/bin/rm2 # bashrc 파일 내용의 alias를 rm -> rm2로 변경 sed 's/rm/rm2/g' -i ~/.bashrc # bashrc 파일 적용 source ~/.bashrc rm 스크립트 적용 vim /usr/bin/rm 명령어를 이용해 아래 스크립트를 적용 및 저장 합니다. chmod 755 /usr/bin/rm 명령어를 이용해 권한을 설정 합니다. * 명령어 경고문구 출력 예시를 위한 스크립트 ..

[Bash Shell Script] 쉘 스크립트 파일 내용 변수에 담은 후 개행 처리 하는 방법

쉘 스크립트 파일 내용 변수에 담은 후 개행 처리 하는 방법 쉘 스크립트를 파일 내용 변수에 담은 후 개행 처리하는 방법 입니다. 보통 파일을 변수에 담을 때 아래와 같은 방법으로 하는데, 이럴 경우 개행 처리가 되지 않습니다. #!/bin/bash var=`cat /root/test` echo $var 이러한 내용을 개행 처리 하는 방법은 크게 3가지 정도가 있습니다. 1) echo를 따옴표로 묶어서 출력 하나의 파일을 출력할 때 사용 합니다. echo로 변수를 출력할 때 따옴표를 없이하면 개행 처리가 안되고, 따옴표 안에 변수를 넣어주어야 개행 처리가 됩니다. 따옴표의 역할과 차이점은 추후 포스팅 하겠습니다. #!/bin/bash var=`cat /root/test` echo "$var" 2) 배열로..

[Bash Shell Script] 쉘 스크립트 2진수 계산 구현 예제 (if문을 이용한 비트 OR 연산자 구현)

쉘 스크립트 2진수 계산 구현 예제 (if문을 이용한 비트 OR 연산자 구현) 쉘 스크립트에서 if문을 이용해 비트 OR 연산자를 구현해볼 수 있습니다. 비트 OR 연산자는 비트1, 2중 하나라도 1이 있을 경우 결과가 1이 되고 비트 1, 2 둘 다 0일 경우 결과가 0이 됩니다. 비트1 비트2 결과 0 1 1 1 1 1 1 0 1 0 0 0 아래와 같이 비트1, 2를 모두 더한 값에서 2가 되는 값만 1로 변경해주면 쉘 스크립트에서 if문을 이용하여 간단히 비트 OR 연산자를 구현해볼 수 있습니다. 1+1=2 → 2진수에는 0과 1밖에 없으므로 2는 모두 1로 변경 0+1=1, 1+0=1 → 비트 OR 연산자의 결과와 같으므로 유지 0+0=0 → 비트 OR 연산자의 결과와 같으므로 유지 #!/bin/..

[Bash Shell Script] 쉘 스크립트 df -h 명령어 특정 사용률 이상 디렉토리 가져오기

쉘 스크립트 df -h 명령어 특정 용량 이상 디렉토리 가져오기 이번 예제에서는 df -h 명령어를 입력했을 때 10% 이상의 디렉토리를 출력 하는것이 목적 입니다. 아래 이미지에서는 / 디렉토리와 /boot 디렉토리를 가져옵니다. #!/bin/bash mount_used=(`df -h`) cnt=0 for mount_used_item in ${mount_used[*]} do if [[ "$mount_used_item" =~ [1-9][0-9][%] ]]; then cnt3=$cnt cnt2=`expr $cnt + 1` echo "사용률:${mount_used[$cnt3]}, 디렉토리: ${mount_used[$cnt2]}" fi cnt=`expr $cnt + 1` done

[Bash Shell Script] Apache ModSecurity audit Log 확인 스크립트 (IP 순위, 국가 순위, GET 순위, POST 순위, Requesy Body 순위)

Apache ModSecurity audit Log 확인 스크립트 modsec_audit.log 경로만 변경해서 사용 하시면 됩니다. #!/bin/bash echo "***********************************" echo "* 1. IP 요청 순위(TOP 10) *" echo "* 2. 국가 요청 순위(TOP 10) *" echo "* 3. GET 요청 순위(TOP 10) *" echo "* 4. POST 요청 순위(TOP 10) *" echo "* 5. Request BODY 순위(TOP 10) *" echo "* 6. All Request BODY *" echo "* 7. 프로그램 종료 *" echo "***********************************" echo -e..

[Bash Shell Script] zabbix-agent, modsecurity, rsyslog 자동 설치/설정 쉘 스크립트

zabbix-agent, modsecurity, rsyslog 자동 설치/설정 쉘 스크립트 로컬 호스트 명과 자빅스 서버의 IP를 입력받은 후 zabbix-agent, modsecurity,rsyslog를 설치 및 설정해주는 쉘 스크립트 입니다. modsecurity의 경우 OWASP의 CRS를 받아온 후 DetectionOnly 모드로 동작하게 되어 직접적인 차단은 하지 않고 modsec_audit.log로 탐지만 하게 됩니다. 스크립트 사용 방법은 첫번째 인자값으로 firewalld를 설정할지를 결정 해주어야 합니다. 만약 install.sh 라는 파일명으로 코드를 저장했다면 firewalld 설정을 할 경우 ./install.sh set-firewalld를 입력해주어야 하고 firewalld를 설정..