Programming 77

[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 "해당하는 번호를 입력 해주세요..

[Bash Shell Script] 쉘 스크립트 로딩 바 구현

배쉬 쉘 스크립트(Bash shell Script) 로딩 바 구현 코드 입니다. ## 로딩바 구현 코드 echo -ne '##### (33%)\r' sleep 1 echo -ne '############# (66%)\r' sleep 1 echo -ne '####################### (100%)\r' echo -ne '\n' 길이와 퍼센테이지는 편하신대로 바꿔서 사용하시면 됩니다. 단순히 저렇게만 구현하면 1초마다 퍼센테이지가 증가하게 되기 때문에, 로딩바가 동작하길 원하는 코드(ex. 반복문) 안에 if 조건문과 함께 넣어주면 됩니다. ex) 1부터 10까지의 숫자를 구하면서 로딩바 구현 #!/bin/bash for i in $(seq 1 10); do if [ "$i" == "1" ]; ..

[Python 3.7] 파이썬 FizzBuzz Test

파이썬의 피즈버즈 테스트(FizzBuzz Test)는 프로그레머의 기초 역량을 확인할 때 사용되기도 한다. 복잡하고 어려운 코드로 실력을 판가름 한다기 보다는 문제에 대한 이해력을 테스트하는 문제이고, 실제로 많은 프로그래머들이 실수를 한다고 한다. - 조건 1) 1부터 200까지의 숫자를 출력 한다. 2) 3의 배수는 숫자 대신 "Fizz" 를 출력한다. 3) 5의 배수는 숫자 대신 "Buzz" 를 출력한다. 4) 3과 5의 공배수는 "FizzBuzz" 를 출력한다. 위의 조건에 맞춰 간단히 프로그램을 만든다면 아래와 같다. for i in range(1, 201): if i % 3 == 0 and i % 5 == 0: ## 3과 5의 공배수를 확인, i % 15 == 0 으로 작성해줘도 상관 없다. ..

Programming/Python 2019.12.11