Category Archives: Shell Script

특정 시간 / 일자 지난 파일 삭제

생성후 10분이상 경과된 파일 삭제
find [경로] -cmin +10 -print -exec rm -rf {} ;
find [경로] -mtime +600s -exec rm -rf {} ;

생성후 1일 이상 경과된 파일 삭제
find [경로] -mtime +1 -print -exec rm -rf {} ;

Mysql 테이블별 백업 스크립트

#!/bin/sh

_USERNAME="" # DB접속용 사용자 아이디 ex) root
_PASSWORD="" # DB접속용 사용자 비밀번호
_BACKUP_DIR="" # 백업이 들어갈 디렉토리

/usr/local/mysql/bin/mysqladmin -u $_USERNAME -p$_PASSWORD reload >& /dev/null

mkdir -p $_BACKUP_DIR$(date +%Y%m%d)

now_db=`echo "show databases" | /usr/local/mysql/bin/mysql -u $_USERNAME -p$_PASSWORD`

num=1

for dir in $now_db ; do

if [ $dir != "Database" ]; then
   /usr/local/mysql/bin/mysqldump -u $_USERNAME -p$_PASSWORD 

   --databases $dir > $_BACKUP_DIR$(date +%Y%m%d)/$dir-$(date +%Y%m%d).sql
   echo "Database - $dir - Backup Complete!!"
   num=$(($num+1))
fi

done

echo "$num database backup complete!!"

실행시 백업디렉토릭/해당날짜/테이블명-날짜.sql 로 백업 된다.

파일 내용 강제 변경 쉘스크립트

파일 검색후 해당 파일의 내용을 지정한 변수에 맞게 변경하는 쉘이다.

사용방법은
# file_contents.sh 변경할구문 변경될구문

쉘 파일의 내용은 아래와 같다

#!/bin/sh
find . -name 파일명 | awk ‘{ print ”cat ”$1” | sed ”s/$2/g” >”$1 }’ | sh

일괄로 변경을 하니 일단은 편한거 같다

쉘 스크립트 암호화하기 (Encrypting Shell Scripts)

”shc” 는 스크립트 파일을 바이너리로 바꿔 주는 역할을 합니다.
php encoder 같은 역할을 한다고 보면 됩니다.

예전엔 중요한 소스 같은 경우, php로 스크립트 파일 위치를 열어서 특정 디렉터리에 위치해 놓고 컴파일하여 사용했는데,
”shc”를 사용하니 더욱 강력(?)하고 손 쉽게 인코딩하더군요.

역시 아는 것이 힘입니다.

쉘 스크립트도 역시 중요한 ”root” 패스워드 정보, ”DB” 정보 등 공유되거나 유출되면 안 되는 파일들이 존재합니다.

이럴 때 정말 유용하게 사용될 수 있으니, 아직까지 모르셨던 분들 아래 문서 참고하셔서 도움되시길 바랍니다.

좋은 날, 기쁜 날 되시길 빕니다.

——————————————————-
1. 다운로드
——————————————————-
(1) 공식
http://www.datsi.fi.upm.es/~frosal/

(2) rootman 사이트
http://www.rootman.co.kr/NFS/Util/shc-3.8.6.tar

——————————————————-
2. 설치
——————————————————-
[root@ns1 local]# tar xvfz shc-3.8.3.tgz
shc-3.8.3/CHANGES
shc-3.8.3/Copying
shc-3.8.3/Makefile
shc-3.8.3/match
shc-3.8.3/pru.sh
shc-3.8.3/shc.1
shc-3.8.3/shc.c
shc-3.8.3/shc.html
shc-3.8.3/shc.README
shc-3.8.3/test.bash
shc-3.8.3/test.csh

[root@ns1 shc-3.8.3]# make install
*** Installing shc and shc.1 on /usr/local
*** ¿Do you want to continue? y
install -c -s shc /usr/local/bin/
install -c -m 644 shc.1 /usr/local/man/man1/

”shc” 파일은 /usr/local/bin/ 디렉터리에 설치됩니다.

——————————————————-
3. 테스트
——————————————————-
(1) 파일 생성 (__EOF___ 까지 쉘 상태에서 긁어다가 붙이시면 됩니다.)
cat > /root/tmp/script.sh << __EOF__
#!/bin/sh
#——————————
# this file is not encrypted
#——————————
echo ”I love Duane’s articles and will send him a donation via PayPal.”
exit 0;
__EOF__

(2) 명령행 실행
[root@ns1 tmp]# shc /root/tmp/script.sh
”script.sh.x”라는 바이너리 파일이 생성됩니다.

(3) 생성된 스크립트 수행
[root@ns1 tmp]# ./script.sh.x
I love Duane’s articles and will send him a donation via PayPal.

——————————————————-
4. 특이한 기능
——————————————————-
[root@ns1 tmp]# shc -e 09/10/2004 -m ”Dude it is too late to run this script.” -f script.sh
[root@ns1 tmp]# ./script.sh.x
./script.sh.x: has expired!
Dude it is too late to run this script.

– 쉘 스크립트에 대한 만료일을 지정하여 실행할 수 있습니다.
– 지정된 날짜 이후는 실행되지 아니 합니다.
– 위 예는 ”2004년 10월 9일”을 스크립트 만료일로 지정하여 만료 후에는 ”Dude it is too late to run this script.”라는
메시지를 출력하라고 지정한 내용입니다.

——————————————————-
5. 참고사항
——————————————————-
– ”shc” 명령어는 스크립트에 대한 C 소스 코드를 생성합니다.
– binary로 파일이 생성되므로 ”./파일명” 형태로 실행하여야 합니다.
– 생성된 스크립트 파일은 이름을 변경해도 무관합니다.

——————————————————-
6. 기본 실행 옵션 설명
——————————————————-
(1) -e date
만료일을 지정합니다. (dd/mm/yyyy format)

(2) -m message
만기 시 메시지를 출력합니다.

(3) -f script_name
컴파일할 스크립트 파일을 지정합니다.

출처 : http://blog.naver.com/ilove7rose/110009818722