Programming/Bash Shell Script 21

[Bash Shell Script] 쉘 스크립트 일부 문자열 비교하기

쉘 스크립트 일부 문자열 비교하기 쉘 스크립트에서 일부 문자열을 비교하는 방법에는 여러가지가 있겠지만, 저같은 경우 =~ 를 사용합니다. 아래 코드와 같이 if문 안에 =~ 를 사용하여 비교할 수 있는데, 아래 코드는 $test_string이라는 변수 안에 a 라는 문자열이 있을 경우 good을 출력하는 간단한 코드 입니다. 단, =~ 를 사용할 시 if [ 조건식 ] ; 이 아니라, if [[ 조건식 ]]; 을 사용하여야 에러가 발생하지 않습니다. #!/bin/bash test_string="a b c d e f g" if [[ "$test_string" =~ "a" ]]; then echo "good!" fi

[Bash Shell Script] zabbix-agent 자동 설치 쉘 스크립트

zabbix-agent 설치 쉘 스크립트 version.1 쉘 스크립트를 실행할 때 인자값을 주어 실행하는 방식 입니다. sh [스크립트명] [자빅스 서버 IP] [firewalld 설정 여부] 와 같이 실행하시면 되고 firewalld 설정을 원한다면 set-firewalld를, 원하지 않는다면 두번째 인자값은 공백으로 두어도 무관 합니다. ex1) /root/zbx-agent-install.sh 에 코드를 저장 하였고, 자빅스 서버의 IP가 192.168.0.1, firewalld 설정을 할 경우 --> sh /root/zbx-agent-install.sh 192.168.0.1 set-firewalld ex2) /etc/zbx-agent-install.sh 에 코드를 저장 하였고, 자빅스 서버의 IP..

[Bash Shell Script] CentOS 7 Mod_Security2 설치 및 Mod_audit 로깅 설정 쉘 스크립트

CentOS 7 Mod_Security2 설치 및 Mod_audit 로깅 설정 쉘 스크립트 root 계정으로 실행 및 Apache는 기존에 설치되어있는 환경 이어야 합니다. #!/bin/bash yum -y install gcc gcc-c++ httpd-devel && cd /root && wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz && tar xvfz /root/pcre-8.43.tar.gz && cd /root/pcre-8.43 && ./configure --prefix=/usr/local/pcre && make && make install && cd /usr/local/src && wget ftp://xmlsoft.org/libxml2/libxml2..

[Bash Shell Script] CentOS 7 Kubernetes 자동 설치 쉘 스크립트(mater node version)

Kubernetes 자동 설치 쉘 스크립트Kubernetes 자동 설치 쉘 스크립트 입니다. 이 쉘 스크립트는 마스터노드에 해당 하며, 워커노드는 추후 시간 될 때 제작할 예정 입니다.글을 작성한 날짜(2020-02-24)를 기준으로 쉘 스크립트로 정상 설치 확인 하였습니다. 쉘 스크립트 초기 실행 화면 테스트 환경 및 참고 사항테스트 환경 및 참고 사항은 아래와 같습니다. 당연히 테스트 서버에서 먼저 진행 하겠지만, 혹여나 실서버에 바로 적용할 경우 크리티컬한 상황이 발생할 가능성이 존재하니 잘 확인 해주세요.혹여나 참고 사항에 적지 못한 부분이 있을 수 있으니 스크립트를 잘 확인 후 필요하지 않은 부분은 주석 처리하여 사용 해주세요.Tools : VMware Workstation 15OS : Cent..

[Bash Shell Script] 쉘 스크립트 랜덤 문자열, 난수 생성(랜덤 숫자)

쉘 스크립트 랜덤 문자열 리눅스의 /dev/urandom을 이용해 랜덤 문자열을 만들 수 있습니다. #!/bin/bash # A 또는 C 랜덤 출력 random_test1=$(cat /dev/urandom | tr -dc 'A''C' | fold -w 1 | sed 1q) echo $random_test1 # A부터 Z 문자 중 6자리 랜덤 출력 random_test2=$(cat /dev/urandom | tr -dc 'A-Z' | fold -w 6 | sed 1q) echo $random_test2 # 0부터 9 숫자 중 3자리 랜덤 출력 random_test3=$(cat /dev/urandom | tr -dc '0-9' | fold -w 3 | sed 1q) echo $random_test3 # 모든..

[Bash Shell Script] 쉘 스크립트 if조건문 라인에서의 "[: too many arguments" 에러 발생

Bash Shell Script의 "[: too many arguments" 에러는 저마다 요인이 좀 다를 수 있습니다. 1. 어떤 값을 입력해야하는 상황에서 엔터를 쳤을때 발생하는 경우 2. 값을 재대로 비교하지 못하거나 아예 스크립트 자체가 실행되지 않는 경우 대표적으로 위의 두가지 경우가 있는데, 보통은 if문 조건식에 있는 변수값이 비어버리는 경우에 발생 할 수 있습니다. if [ $result == "1" -o $result == "2" ]; then echo "good!" fi 위와 같은 간단한 조건식이 있을 때 result 변수값이 비어버릴 경우 문법에 의해 조건식이 성립될 수 없어 "[: too many arguments" 에러가 발생 합니다. 해결 방법은 비교적 간단한데, 변수명을 큰따옴..

[Bash Shell Script] 쉘 스크립트 trap 명령어를 이용한 시그널 제어

Bash Shell Script 에서 리눅스의 *시그널을 제어하는 방법 입니다. * 시그널 이란? 간단히 말하자면 특정 이벤트가 발생 했을때 신호를 보내 알려주는걸 뜻 합니다. 대표적인 예로 리눅스의 Ctrl+C , Ctrl+Z 를 눌러서 프로그램을 종료 또는 중지를 한다던가, 윈도우에서 Alt+F4 를 눌러서 종료한 적이 있을텐데, 이렇게 특정 입력이 들어 올 때 인터럽트가 발생하여 프로그램을 제어하게 됩니다. 리눅스의 시그널은 아래 표를 참고해주세요. 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE..

[Bash Shell Script] 로그 추출, 정리 쉘 스크립트 예제

로그 추출 및 정리 스크립트 입니다. 압축 되어있는 로그 파일을 꺼낸 후 필요한 기간, 날짜 또는 시간별로 로그를 뽑아낼 수 있는 스크립트로, 많은 서버들의 로그 파일을 특정 기간, 특정 날짜, 특정 시간대별로 추출할 필요가 있을 때 사용하시면 됩니다. 1. 스크립트 실행 환경 - OS : CentOS6.7 - Shell : Bash - 매일 logs_backup_년도-월-일.tar.gz 의 로그 압축 파일 생성 - 로그파일 내의 날짜 키워도는 날짜,월(영문표기),년도 (ex.31/Dec/2019) - 각 파일안에 들어있는 로그의 날짜가 일정치 않음 (3~7일 분량의 로그가 쌓일 경우) 아래 스크립트 안에서도 수정할 부분이 많이 있기 때문에 무작정 사용하시지 마시고 환경에 따라 수정 및 충분한 테스트 후..

[Bash Shell Script] 백업 용량 변동 출력 쉘 스크립트 예제

백업 파일의 용량을 가져온 후 이전의 백업파일과 용량 비교하여 백업이 정상적으로 잘 되었는지 편하게 확인할 수 있는 쉘 스크립트 입니다. 아래 스크립트로 용량 변동 결과를 파일로 떨군 뒤, 크론탭으로 매일 몇시에 메일 전송등을 사용하여 점검을 자동화할 수 있습니다. * 사용 환경에 따라 경로, 파일명(date 날짜 포함) 수정이 필요합니다. 스크립트 작성 환경 - OS : CentOS 6.7 - Shell : Bash #!/bin/bash date=$(date '+%Y-%m-%d') yesterday=$(date '+%Y-%m-%d' -d '1 day ago') cd /backup/log ## 백업 파일이 존재하는 경로로 이동 log=`find /backup/log -name *$date* -ls | a..

[Bash Shell Script] DNS 도메인/호스트 추가 자동화 쉘 스크립트 예제

아래의 모든 경로는 임시 설정하여 작성 하였습니다. 바로 실 서버에 적용하기엔 무리가 있으니, 실서버와 같은 환경의 DNS 서버를 구성 후 경로 변경 및 테스트 진행 후 적용하시기 바랍니다. * 사용 환경에 맞춰 경로, SOA 필드 값, 네임서버 등 변경이 필요 합니다. 스크립트 작성 환경 - OS : CentOS 6.7 - Shell : Bash - 패키지 : Bind 9.8.2 #!/bin/bash DIR=/root/test named_conf="/etc/named.rfc1912.zones" serial2=[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] echo "호스트 추가(1)" echo "도메인 추가(2)" echo -e "해당하는 번호를 입력 해주세요..