쉘 스크립트는 지속적으로 업데이트

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. 배치는 사용자를 작성하고 암호를 설정, 암호 파일을 작성

  1. 명령 경우 mkpasswd를 사용하여 임의의 암호
  2. 스크립트에서 사용자 암호, 당신은 에코 명령 passwd를 파이프 라인을 사용할 수 있습니다

 구현 스크립트를 다음과 같이 :

#! / 빈 / bash는 
서열 00 09``의 난에 대한이 
난은 useradd 사용자 $ 
통과를 =`mkpasswd` 
에코 "사용자 $ 내가에게 $ 통과">> /root/shell.txt 
에코 "$ 통과"| passwd를 --stdin 옵션 사용자는 내가 &>을 / dev / null $ 
수행         

일괄 삭제 사용자

#! / 빈 / bash는 
서열 '에서 내가 00 09`은 
어떻게 
내가 및 userdel -r 사용자 $ 
수행을

추천

출처www.cnblogs.com/yantou/p/12023010.html