셸 연습 문제 - 22

제목 요구
셸 스 크 립 트 를 작성 하고 curl - I 가 되 돌아 오 는 상태 코드 를 통 해 방문 한 사이트 가 정상 인지 확인 합 니 다.예 를 들 어 상태 코드 가 200 일 때 만 정상 이다.
답안 을 참고 하 다
#!/bin/bash
#                
#  :  -   www.apelearn.com
#  :2018-11-01

url="http://www.apelearn.com/index.php"
[email protected]

code=`curl -I $url 2>/tmp/curl.err|head -1|awk '{print $2}'`
if [ -z "$code" ]
then
    python mail.py $mail_user "$url    " "`cat /tmp/curl.err`"
    exit
elif [ $code != "200" ]
then
    curl -I $url &> /tmp/curl.log
    python mail.py $mail_user "$url        $code" "`/tmp/curl.log`" 
fi

제목 요구
사용자 홈 디 렉 터 리 (스 크 립 트 를 실행 하 는 사용자 가 일반 사용자 일 수도 있 고 루트 일 수도 있 음 을 고려 하여) 아래 5KB 이하 의 파일 을 tar. gz 압축 패키지 로 포장 하고 현재 날 짜 를 파일 이름 접두사 로 합 니 다. 예 를 들 어 2018 - 03 - 15. tar. gz.
답안 을 참고 하 다
tar 압축 파일 보기 tar - tf tar. gz
#!/bin/bash
#                5k   
#  :  -   www.apelearn.com
#  :2018-11-01

t=`date +%F`
cd $HOME
tar czf $t.tar.gz `find ./ -type f -size -5k|xargs`

제목 요구
한 학우 가 부주의 로 iptables 규칙 으로 sshd 포트 22 를 봉 해 버 렸 는데 결 과 는 원 격 으로 로그 인 할 수 없 었 다. 이 문 제 를 해결 하려 면 기계실 에 가서 실제 컴퓨터 에 로그 인하 여 이 규칙 을 삭제 해 야 한다.문제 가 생 겼 습 니 다. 모니터링 스 크 립 트 를 써 서 iptables 규칙 이 22 포트 를 봉 했 는 지 확인 하고 봉 해 지면 열 어 주 십시오.스 크 립 트 를 작성 하여 작업 계획 에 넣 고 분당 한 번 씩 실행 합 니 다.
답안 을 참고 하 다
#!/bin/bash
#        22  
#  :  -   www.apelearn.com
#  :2018-11-01

iptables -nvL INPUT --line-numbers |grep -w 'dpt:22' |awk '$4 ~/REJECT|DROP/ {print $1}' > /tmp/iptables.log
n=`wc -l /tmp/iptables.log`

if [ $n -gt 0 ]
then
    for n in `tac /tmp/iptables.log`
    do
    iptables -D INPUT $n
    done
fi

제목 요구
nginx 가 접근 한 로그 파일 은 / usr / local / nginx / logs / access. log 에 있 습 니 다. 아침 10 시 부터 12 시 까지 ip 를 가장 많이 방문 한 것 은 무엇 입 니까?
참조 로그
111.199.186.68 – [15/Sep/2017:09:58:37 +0800]  “//plugin.php?id=security:job” 200 “POST //plugin.php?id=security:job HTTP/1.1″”http://a.lishiming.net/forum.php?mod=viewthread&tid=11338&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36”
203.208.60.208 – [15/Sep/2017:09:58:46 +0800] “/misc.php?mod=patch&action=ipnotice&_r=0.05560809863330207&inajax=1&ajaxtarget=ip_notice” 200 “GET /misc.php?mod=patch&action=ipnotice&_r=0.05560809863330207&inajax=1&ajaxtarget=ip_notice HTTP/1.1″”http://a.lishiming.net/forum.php?mod=forumdisplay&fid=65&filter=author&orderby=dateline” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36”

답안 을 참고 하 다
#!/bin/bash
#        Nginx    
#  :  -   www.apelearn.com
#  :2018-11-01

//       
export LANG=en
log="/usr/local/nginx/logs/access.log"
#         1[01]:[0-5][0-9]: 
t=`date +%d/%b/%Y:1[01]:[0-5][0-9]:`

egrep "$t" $log|awk '{print $1}' |sort -n |uniq -c |sort -n |tail -1 |awk '{print $2}'

제목 요구
셸 스 크 립 트 를 작성 합 니 다.일시 정지 숫자 를 입력 하고 1 에서 이 숫자 로 인쇄 하 는 것 을 알려 줍 니 다.그리고 계속 할 지 물 어보 세 요.계속 하면 숫자 를 입력 하고 인쇄 하 십시오. 그렇지 않 으 면 스 크 립 트 를 종료 합 니 다.
예: 5 를 입력 하면 1, 2, 3, 45 를 인쇄 한 다음 에 15 를 계속 입력 한 다음 에 6, 7, 14, 15 를 인쇄 하 는 것 으로 유추 합 니 다.
답안 을 참고 하 다
#!/bin/bash
#          
#  :  -   www.apelearn.com
#  :2018-11-01

#      
read -p "Please input a number: " n
#     
n1=`echo $n |sed 's/[0-9]//g'`
if [ -n "$n1" ]
then
    echo "Please input a number."
    exit
fi

for i in `seq 1 $n`
do
    echo $i
done

#      
read -p "If continue? y/n" c

case $c in
  n|N)
    exit
    ;;
  y|Y)
    #       
    read -p "Please input a number: " n2
    #        
    n3=`echo $n2|sed 's/[0-9]//g'`
    if [ -n "$n3" ]
    then
    echo "Please input a number."
    exit
    fi
    #                
    if [ $n2 -le $n ]
    then
    echo "$n2 should grater than $n."
        exit
    fi
    for i in `seq $[$n+1] $n2`
    do
    echo $i
    done
    ;;
  *)
    echo "Please input y or n."
    ;;
esac

좋은 웹페이지 즐겨찾기