日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux中srch出现bash,Shell练习题(3)

發布時間:2024/10/14 linux 84 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux中srch出现bash,Shell练习题(3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)查找字母數小于6的單詞

用shell打印下面這句話中字母數小于6的單詞。

Bash also interprets a number of multi-character options.

#!/bin/bash

forsinBashalsointerpretsanumberofmulti-characteroptions

do

n=`echo$s|wc-c`

if[$n-lt6]

thenecho$s

fi

done

(2)輸入數字執行對應命令

寫一個腳本實現如下功能: 輸入一個數字,然后運行對應的一個命令。顯示命令如下:cmd meau* 1―date 2�Cls 3�Cwho 4�Cpwd 當輸入1時,會運行date,輸入2時運行ls,依此類推。

#!/bin/bash

echo"*cmdmeau**1---date2--ls3--who4--pwd"

read-p"pleaseinputanumber1-4:"n

case$nin

1)

date

;;

2)

ls

;;

3)

who

;;

4)

pwd

;;

*)

echo"Pleaseinputanumber:1-4"

;;

esac

(3)監控httpd進程

在服務器上,寫一個監控腳本:

每隔10s去檢測一次服務器上的httpd進程數,如果大于等于500的時候,就需要自動重啟一下apache服務,并檢測啟動是否成功?

若沒有正常啟動還需再一次啟動,最大不成功數超過5次則需要理解發郵件通知管理員,并且以后不需要再檢測!

如果啟動成功后,1分鐘后再次檢測httpd進程數,若正常則重復之前操作(每隔10s檢測一次),若還是大于等于500,那放棄重啟并需要發郵件給管理員,然后自動退出該腳本。假設其中發郵件腳本為之前咱們使用的 mail.py

#!/bin/bash

check_service()

{

n=0

foriin`seq15`

do

/usr/local/apache2/bin/apachectlrestart2>/tmp/apache.err

if[$?-ne0]

then

n=$[$n+1]

else

break

fi

done

if[$n-eq5]

then

##下面的mail.py參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

pythonmai.py"123@qq.com""httpdservicedown"`cat/tmp/apache.err`

exit

fi

}

while:

do

t_n=`ps-Chttpd--no-heading|wc-l`

if[$t_n-ge500]

then

/usr/local/apache2/bin/apachectlrestart

if[$?-ne0]

then

check_service

fi

sleep60

fi

sleep10

done

(4)封ip

需求: 根據web服務器上的訪問日志,把一些請求量非常高的ip給拒絕掉!

分析: 我們要做的,不僅是要找到哪些ip請求量不合法,并且還要每隔一段時間把之前封掉的ip(若不再繼續請求了)給解封。 所以該腳本的關鍵點在于定一個合適的時間段和閾值。

比如, 我們可以每一分鐘去查看一下日志,把上一分鐘的日志給過濾出來分析,并且只要請求的ip數量超過100次那么就直接封掉。 而解封的時間又規定為每半小時分析一次,把幾乎沒有請求量的ip給解封!

參考日志文件片段:

157.55.39.107[20/Mar/2015:00:01:24+0800]www.aminglinux.com"/bbs/thread-5622-3-1.html"200"-""Mozilla/5.0(compatible;bingbot/2.0;+http://www.bing.com/bingbot.htm)"

61.240.150.37[20/Mar/2015:00:01:34+0800]www.aminglinux.com"/bbs/search.PHP?mod=forum&srchtxt=LNMP&formhash=8f0c7da9&searchsubmit=true&source=hotsearch"200"-""Mozilla/5.0(compatible;bingbot/2.0;+http://www.bing.com/bingbot.htm)"

#!/bin/bash

logfile=/home/logs/access.log

d1=`date-d"-1minute"+%H:%M`

d2=`date+%M`

ipt=/sbin/iptables

ips=/tmp/ips.txt

block(){

grep"$d1:"$logfile|awk'{print$1}'|sort-n|uniq-c|sort-n>$ips

foripin`awk'$1>100{print$2}'$ips`;do

$ipt-IINPUT-ptcp--dport80-s$ip-jREJECT

echo"`date+%F-%T`$ip">>/tmp/badip.txt

done

}

unblock(){

foriin`$ipt-nvL--line-numbers|grep'0.0.0.0/0'|awk'$2<15{print$1}'|sort-nr`;do

$ipt-DINPUT$i

done

$ipt-Z

}

if[$d2=="00"]||[$d2=="30"];then

unblock

block

else

block

fi

(5)找規律打印數字

請詳細查看如下幾個數字的規律,并使用shell腳本輸出后面的十個數字。

10 31 53 77 105 141 .......

試題解析:

我想大多數人都會去比較這些數字的差值:

10 31 53 77 105 141

21 22 24 28 36

但是這個差值看,并沒有什么規律,而我們再仔細看的時候,發現這個差值的差值是有規律的:

10 31 53 77 105 141

21 22 24 28 36

1 2 4 8

#!/bin/bash

x=21

m=10

echo$m

foriin`seq014`;do

j=$[2**$i]

m=$[$m+$x]

echo$m

x=$[$x+$j]

done

總結

以上是編程之家為你收集整理的Shell練習題(3)全部內容,希望文章能夠幫你解決Shell練習題(3)所遇到的程序開發問題。

如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。

本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。

小編個人微信號 jb51ccc

喜歡與人分享編程技術與工作經驗,歡迎加入編程之家官方交流群!

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Linux中srch出现bash,Shell练习题(3)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。