Linux 의 Shell 스 크 립 트 - Nginx 설치 및 서비스, 모니터링

netstat 명령 은 시스템 에서 시 작 된 포트 정 보 를 볼 수 있 습 니 다. 이 명령 은 다음 과 같이 자주 사용 합 니 다.
  -n  포트 번 호 를 디지털 형식 으로 표시 합 니 다.  -t  TCP 연결 포트 보이 기  -u  UDP 연결 포트 보이 기  -l  서비스 가 감청 하고 있 는 포트 정 보 를 표시 합 니 다. 예 를 들 어 httpd 가 시작 되면 80 포트 를 계속 감청 합 니 다.  -p  감청 포트 의 서비스 이름 이 무엇 인지 표시 합 니 다 (즉 프로그램 이름)
 일반적인 사용 방법: netstat - ntulp | grep 서비스 이름 검색 할 수 있다 면 이 서비스 가 시작 되 었 다 는 것 을 설명 한다.
nginx
   한 사이트 서버 는 아파 치 http 와 같은 80 포트 를 사용 하기 때문에 한 번 에 하나만 사용 할 수 있 고 한 번 에 다른 하 나 를 열 면 꺼 야 합 니 다.
   원본 컴 파일 설치 가 필요 합 니 다. 컴 파일 설치 전에 네 개의 소프트웨어 를 준비 해 야 합 니 다: gcc, make, openssl - devel, pcre - devel    기본 디 렉 터 리 와 프로그램 위치
/usr/local/nginx/conf
파일 디 렉 터 리 설정
/usr/local/nginx/html
사이트 페이지 디 렉 터 리
/usr/local/nginx/logs
Nginx 로그 디 렉 터 리
/usr/local/nginx/sbin
주 프로그램 디 렉 터 리
 
/usr/local/nginx/sbin/nginx
시작 서비스
/usr/local/nginx/sbin/nginx -s stop
서비스 닫 기
/usr/local/nginx/sbin/nginx -V
소프트웨어 정보 보기
시스템 모니터링 명령
uptime
CPU 부하 상황 을 살 펴 보면 마지막 세 개의 숫자 는 현재 CPU 부하 백분율, 5 분 동안 평균 부하, 15 분 평균 부하 입 니 다.
ifconfig
'RX packets' 는 다운로드 한 패 킷 크기 (바이트)' TX packets' 는 업 로드 된 패 킷 크기 를 말 합 니 다.
free
'Mem' 뒤에 메모리 의 총량, 사용량, 잉여 량...
df
'/' 끝 줄 에서 시스템 디스크 와 관련 된 데 이 터 를 말 합 니 다.
rpm -qa
설 치 된 패키지 의 개 수 를 검색 합 니 다.
    구체 적 인 실제 사용 은 뒤의 '서버 운행 지표 실시 간 모니터링' 을 본다.
yum 패키지 설치 현황 보기
[ $(yum repolist | awk '/repolist/{print$2}' | sed 's/,//') -eq 0 ] && echo 'your yum has problem' && exit 2 || echo 'your yum is OK'

패 킷 은 읽 기 쉬 운 바이트 수가 읽 을 수 있 는 데이터 단위 로 출력 되 지 않 습 니 다.
printf(){
  all=''
  a=${1:-0}
  if [ $a -gt 1024 ];then
     k=$[a/1024]
     if [ $k -gt 1024 ];then
        m=$[k/1024]
        if [ $m -gt 1024 ];then
           g=$[m/1024]
           all=${g}'G '
           m=$[m%1024]
        fi
        all=${all}${m}'M '
        k=$[k%1024]
     fi
     all=${all}${k}'K '
     a=$[a%1024]
  fi
  all=${all}$a'b'
  echo $all
}

nginx 의 원 마 컴 파일 설치   패 키 지 는 블 로그 자원 라 이브 러 리 에 Nginx. zip 에 두 가지 버 전의 Nginx 소프트웨어 가 있 습 니 다. 아래 스 크 립 트 는 기본적으로 nginx - 1.12.2 입 니 다.
#!/bin/bash

jindu(){
  while :
  do
    echo -n '#'
    sleep 0.1
  done
}

# check yum
[ $(yum repolist | awk '/repolist/{print$2}' | sed 's/,//') -eq 0 ] && echo 'your yum has problem' && exit 2
jindu &
for i in gcc make openssl-devel pcre-devel
do
  rpm -q $i &>/dev/null
  if [ $? -ne 0 ];then
    yum install -y $i &>/dev/null
  fi
done
echo -e "
"'gcc,make,openssl-devel,pcre-devel is ready' # check nginx.tar file=${1:-nginx-1.12.2.tar.gz} if [ -f $file ];then   tar -xf $file -C . else   kill $!   echo -e
'Cannot found '$file" you can try to use \'nginx_install file\' "   exit 3 fi echo -e
'nginx is making install..' cd nginx-1.12.2 ./configure &>/dev/null make &>/dev/null make install &>/dev/null # check nginx [ ! -e /usr/local/nginx ] && kill $! && echo -e "
nginx has problem" && exit 1 kill $! echo -e "
nginx is ready" exit 0

nginx 서버 서비스 시작 관련 스 크 립 트 닫 기
#!/bin/bash
start(){

   # check httpd 
   systemctl status httpd &>/dev/null
   [ $? -eq 0 ] && systemctl stop httpd && echo if you want to start ngix you have to stop apache || echo 'port 80 is ready'

   #    apache   ,                
   [ $? -ne 0 ] && echo 'your httpd cannot be stopped' && exit 1

   #check nginx and start
   netstat -ntlup | grep -q nginx
   [ $? -ne 0 ] && /usr/local/nginx/sbin/nginx

   status
}

stop(){
   # stop nginx
   netstat -ntlup | grep -q nginx
   [ $? -eq 0 ] && /usr/local/nginx/sbin/nginx -s stop

   #check nginx
   netstat -ntlup | grep -q nginx
   if [ $? -eq 0 ];then 
     echo -e "server nginx stop -------------------[\033[31mfalse\033[0m]"
     exit 2
   else
     echo -e "server nginx stop -------------------[\033[32mOK\033[0m]"
   fi
}

status(){
   #check nginx
   netstat -ntlup | grep -q nginx
   if [ $? -ne 0 ];then 
     echo -e "server nginx is ---------------------[\033[31mfalse\033[0m]"
     exit 3
   else
     echo -e "server nginx is ---------------------[\033[32mOK\033[0m]"
   fi
}

# choice        ,          ,         
choice=${1:-0}
case $choice in
start)
  start ;;
stop)
  stop ;;
restart)
  stop &>/dev/null
  start ;;
status)
  status ;;
*)
   echo 'you can try nginx_server start|stop|restart|status'
esac

서버 운행 지표 실시 간 모니터링
#!/bin/bash

# change to echo readable
printf(){
  all=''
  a=${1:-0}
  if [ $a -gt 1024 ];then
     k=$[a/1024]
     if [ $k -gt 1024 ];then
        m=$[k/1024]
        if [ $m -gt 1024 ];then
           g=$[m/1024]
           all=${g}'G '
           m=$[m%1024]
        fi
        all=${all}${m}'M '
        k=$[k%1024]
     fi
     all=${all}${k}'K '
     a=$[a%1024]
  fi
  all=${all}$a'b'
  echo $all
}


while :
do
  # CPU     
  now_CPU=`uptime | awk '{print $(NF-2)}' | sed 's/,//'`
  all_CPU=`uptime | awk '{print $NF}'`

  #         
  ifcon_r=`ifconfig eth0 | awk '/RX p/{print $5}'`
  ifcon_t=`ifconfig eth0 | awk '/TX p/{print $5}'`

  #       
  mem=`free | awk '/Mem/{print $4}'`

  #         
  devepment=`df | awk '/\/$/{print $4}'`

  #      
  user=`cat /etc/passwd | wc -l`

  #      
  loginnum=`who | wc -l`

  #      
  ps=`ps aux | wc -l`

  #        
  repolis=`rpm -qa | wc -l`
  clear
  echo -e 'CPU     :'"\t\t"$now_CPU
  echo -e 'CPU     :'"\t\t"$all_CPU
  echo -en '       :'"\t"
    printf $ifcon_r
  echo -en '       :'"\t"
    printf $ifcon_t
  echo -en '      :'"\t\t"
    printf $mem
  echo -en '      :'"\t\t"
    printf $devepment
  echo -e '       :'"\t"$user
  echo -e '        :'"\t"$loginnum
  echo -e '            :'"\t"$ps
  echo -e '           :'"\t"$repolis
  sleep 0.5
done

원 격 로그 인 안전 모니터링
#!/bin/bash

num=3

while :
do
  for i in `awk '/Invalid user/{IP[$10]++}END{for(i in IP){print i,IP[i]}}' /var/log/secure | awk '$2>'$num'{print $2}'`
  do
     echo 'this IP '$i' try to ssh ,but its username is wrong too many times' | mail -s root
  done
  for i in `awk '/Failed password/{IP[$11]++}END{for(i in IP){print i,IP[i]}}' /var/log/secure | awk '$2>'$num'{print $2}'`
  do
     echo 'this IP '$i' try to ssh ,but its passwd is wrong too many times' | mail -s root
  done
  sleep 5s
done

좋은 웹페이지 즐겨찾기