1. 쉘은 디스크가 80 % 이상인지 확인하고 메일 경고를 보낼 수 있습니다.
어떻게 디스크 사용량보기를 분석 :
# 안양 -h | 그렙는 / dev / vda1 | -f1 컷 "%"를 -d | AWK는 '{$ 5 인쇄}' 或者 # 안양 -h | 그렙는 / dev / vda1 | '{$ 1 인쇄}'-F는 "%"는 awk가 | awk는 '{$ 5 인쇄}'
스크립트는 스크립트가 기록되는 경우, 쉘을 고려하면 80 명 이상이며 결정한다 :
#! / 빈 / bash는 속도 = -H 'DF | 그렙는 / dev / Vdal | AWK'. {} 5 인쇄 $는 '| -f1` 컷 "%"를 -d IF는 [$ 비율이 80 -ge] 그때 파이썬 / 루트 / mail.py [email protected] 전체 디스크에서 "이메일 제목", "메일 내용은 / dev / Vdal는"있는 Fi를
파이썬 스크립트 :
#!는 / usr / 빈 / 파이썬은 #coding : UTF-8 가져 오기 smtplib 가져 오기 MimeText는 email.mime.text에서 가져 오기 SYS # 보내기 메일 mail_user = '관리자 @'// 계정 SMTP 암호 번호를 보낸 사람 주소 mail_pass = 'pqj0Ll6yd '// 비밀번호 send_mail (to_list 사람, 제목, 내용) DEF : 나 = "aliyun 경보 인터넷"+ "<"+ mail_user + ">" MSG = MimeText는 (. 내용, "보통", "UTF-8') MSG [ '제목 '] = 제목 MSG ['보내는 사람 '] = 나에 to_list =]에 [MSG' 은 try : 알리 클라우드 제공 업체의 SMTP 서비스 주소의 # 정의 의 = smtplib.SMTP ( "smtpdm.aliyun.com", 25) // 주 알리 클라우드 서버는 25 개 포트 열려 있지, 80 개 포트를 변경할 수 있습니다 s.login (mail_user, mail_pass) S.센드 메일 (나, to_list, msg.as_string ()) s.close () 참을 리턴 예외를 제외하고, 예 : 인쇄 STR (E) 복귀 거짓 경우 __name__ == "__main__" send_mail (sys.argv에 [1] sys.argv에 [2] sys.argv에 [3])
테스트 결과 :
당신이 자동으로 열을 열 수없는 경우 2. 여부 열린 포트로 결정 nginx80
첫째, nmap이 기본 패킷을 검사 네트워크가 존재하지 않는, 설치
# 냠 -y nmap을 설치
포트가 열려 있는지 여부 분석
# nmap을 -sT 192.168.109.136 | 그렙 TCP | 그렙 HTTP | AWK는 '{$ 2 인쇄}' 공개
쉘 스크립트 판사
#! / 빈 / bash는 Nginx에 =`의 nmap -sT 192.168.109.136 | 그렙 TCP | 그렙 HTTP | AWK ''{2} $ 인쇄 ' 데이터 DATE =`m %% + % d`는 Y IF [ "$ HTTP"== "열기"] 다음 에코 "데이터 $의 nginx가 확인됩니다!">> /tmp/http-acc.log 다른 /etc/init.d/nginx 시작 &>을 / dev / null 파이썬합니다 / usr / local / sbin / 메일. 평 [email protected] "$ 데이터 다시 시작의 nginx를"nginx를 아래로 자동으로 다시 시작 알람 모니터링 "!!!" // 경고 제거 할 수있는 데이터를 다시 시작 Nginx에 $ 에코! "">> /tmp/http-err.log 파이를
테스트 결과
3. 백업 서버로, 이른 아침에게 백업 데이터를 매일 백업 MySQL 데이터베이스 쉘
#! / 빈 / bash는 DATADIR = / tmp를 / MySQL을 /`DATE + m %%% d` //은 Y 정의 된 시간 datadb = dedecms // 라이브러리 이름 datadb1 = Discuz가 // 라이브러리 이름 datadb2 = zrlog // 라이브러리 이름 dbuser에 = 루트 // 사용자 dbpass = 123 // 비밀번호 backcmd = mysqldump를 // 백업 명령 참고 : 절대 최적의 경로가 있는 경우, 다음 // 여부를 결정가 [! -d $ DATADIR] 에서 mkdir -p $ DATADIR // 존재하지 않는 만들 에코 " MKDIR 성공 "의 // 성공 다른 , 실패는 귀찮게하지 않습니다, 디렉토리가 존재 // 실패"MKDIR 실패 에코 "를 할 수있다 Fi를 $ backcmd -u $ dbuser에 -p $ dbpass $ datadb> $ DATADIR / $ datadb.sql // 백업 $의 backcmd을 -u $ dbuser에 -p $ dbpass $ datadb1 > $ DATADIR / $ datadb1.sql // 백업 $ backcmd -u $ dbuser에 -p $ dbpass $ datadb2> $ DATADIR / $ datadb2.sql // 백업 rsync를 -avP / tmp를 / mysql을 / 172.31.215.135:/tmp/mysql // 업로드 된 백업 서버에
4. 정적 파일 백업, 확산에 백업 정적 서버
#! / 빈 / bash는 BCK_DIR = "/ tmp를 / 데이터"// 경로 정의 = "/ MNT / *"WEB_DIR을 // 백업 경로 정의 DATE =`날짜 + % F` // 시간 DATE_YEAR =`날짜 + %의 Y` // 시간 DATE_MONTH은 =`날짜 + % m` // 시간 일 = 7 // 시간 의 경우 시험 -d $ BCK_DIR / $ DATE_YEAR / $ DATE_MONTH // 결정 (가) 다음 에코 "디렉토리 $ BCK_DIR / DATE_YEAR $ / $ DATE_MONTH이 존재한다." 다른 에코 "디렉토리 $ BCK_DIR이 / $ DATE_YEAR / $ DATE_MONTH가. 만들기 디렉토리를 ... 존재하지 않습니다" 에서 mkdir -p $ BCK_DIR / $ DATE_YEAR / $ DATE_MONTH //하지 존재 만들 Fi를 # 백업 타르 -czf $ BCK_DIR / $ DATE_YEAR / $ DATE_MONTH / web_ $ DATE.tar.gz $ WEB_DIR // 패키지 찾을 $ BCK_DIR / $ DATE_YEAR / 타입 F -name "* .tar.gz를"-mtime + $ 일 간부 RF RM은 {} \; // 7 일 이상 삭제 -avP $ BCK_DIR rsync를 172.31.215.135:/tmp/data/ // 백업 서버로 복사
5. 배치는 사용자를 작성하고 암호를 설정, 암호 파일을 작성
- 명령 경우 mkpasswd를 사용하여 임의의 암호
- 스크립트에서 사용자 암호, 당신은 에코 명령 passwd를 파이프 라인을 사용할 수 있습니다
구현 스크립트를 다음과 같이 :
#! / 빈 / bash는 서열 00 09``의 난에 대한이 할 난은 useradd 사용자 $ 통과를 =`mkpasswd` 에코 "사용자 $ 내가에게 $ 통과">> /root/shell.txt 에코 "$ 통과"| passwd를 --stdin 옵션 사용자는 내가 &>을 / dev / null $ 수행
일괄 삭제 사용자
#! / 빈 / bash는 서열 '에서 내가 00 09`은 어떻게 내가 및 userdel -r 사용자 $ 수행을