久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

100多个shell脚本的例子

發(fā)布時間:2024/3/24 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 100多个shell脚本的例子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文用于記錄學(xué)習(xí)和日常中使用過的shell腳本

【腳本1】打印形狀
打印等腰三角形、直角三角形、倒直角三角形、菱形

等腰三角形

#!/bin/bash
read -p "Please input the length: " n
for i in seq 1 $n
do
for ((j=$n;j>i;j–))
do
echo -n " "
done

for m in seq 1 $i
do
echo -n "* "
done
echo
done

倒直角三角形

read -p "Please input the length: " len
for i in seq 1 $len
do
for j in seq $i $len
do
echo -n "* "
done
echo
done

直角三角形

read -p "Please input the length: " len
for i in seq 1 $len
do
for((j=1;j<=$i;j++))
do
echo -n "* "
done
echo
done

菱形

read -p "Please input the length: " n

for i in seq 1 $n
do
for ((j=$n;j>i;j–))
do
echo -n " "
done
for m in seq 1 $i
do
echo -n "* "
done
echo
done

for i in seq 1 $n
do
for((j=1;j<=i;j++))doecho?n""donefor((k=i;j++)) do echo -n " " done for((k=i;j++))doecho?n""donefor((k=i;k<=$len-1;k++))
do
echo -n "* "
done
echo
done
【腳本2】截取字符串
現(xiàn)有一個字符串如下:

http://www.aaa.com/root/123.htm

請根據(jù)以下要求截取出字符串中的字符:

1.取出www.aaa.com/root/123.htm

2.取出123.htm

3.取出http://www.aaa.com/root

4.取出http:

5.取出http://

6.取出www.aaa.com/root/123.htm

7.取出123

8.取出123.htm

#!/bin/bash
var=“http://www.aaa.com/root/123.htm”
#1.
echo $var |awk -F ‘//’ ‘{print $2}’
#2.
echo $var |awk -F ‘/’ ‘{print $5}’
#3.
echo $var |grep -o ‘http.*root’
#4.
echo $var |awk -F ‘/’ ‘{print $1}’
#5.
echo $var |grep -o ‘http://’
#6.
echo $var |grep -o ‘www.*htm’
#7.
echo $var |grep -o ‘123’
#8.
echo $var |grep -o ‘123.htm’
【腳本3】tomcat啟動腳本
emm。。這個腳本是因為tomcat沒有自帶的能夠給service開機(jī)啟動的腳本,我就琢磨著自己寫了一個簡單的啟動腳本,如下:

#!/bin/bash

chkconfig:2345 64 36

description: Tomcat start/stop/restart script.

BEGIN INIT INFO

Provides: tomcat

Required-Start:

Should-Start:

Required-Stop:

Default-Start: 2 3 4 5

Default-Stop: 0 1 6

Short-Description: start and stop Tomcat

Description: Tomcat Service start&restart&stop script

END INIT INFO

##Written by zero.##
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
TOMCAT_BIN=/usr/local/tomcat/bin
RETVAL=0
prog=“Tomcat”

start()
{
echo “Starting $prog…”
/bin/bash TOMCATBIN/startup.shRETVAL=TOMCAT_BIN/startup.sh RETVAL=TOMCATB?IN/startup.shRETVAL=?
return $RETVAL
}
stop()
{
echo “Stopping $prog…”
/bin/bash TOMCATBIN/shutdown.shRETVAL=TOMCAT_BIN/shutdown.sh RETVAL=TOMCATB?IN/shutdown.shRETVAL=?
return $RETVAL
}
restart(){
echo “Restarting $prog…”
stop
start
}

case “$1” in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $“Usage: $0 {start|stop|restart}”
RETVAL=1
esac
exit $RETVAL
【腳本4】自定義rm命令
linux系統(tǒng)的rm命令太危險,一不小心就會刪除掉系統(tǒng)文件。 寫一個shell腳本來替換系統(tǒng)的rm命令,要求當(dāng)刪除一個文件或者目錄時,都要做一個備份,然后再刪除。下面分兩種情況,做練習(xí):

  • 簡單的實現(xiàn):
  • 假設(shè)有一個大的分區(qū)/data/,每次刪除文件或者目錄之前,都要先在/data/下面創(chuàng)建一個隱藏目錄,以日期/時間命名,比如/data/.201703271012/,然后把所有刪除的文件同步到該目錄下面,可以使用rsync -R 把文件路徑一同同步,示例:

    #!/bin/bash
    fileName=$1
    now=date +%Y%m%d%H%M
    read -p "Are you sure delete the file or directory $1? yes|no: " input

    if [ $input == “yes” ] || [ input=="y"]thenmkdir/data/.input == "y" ] then mkdir /data/.input=="y"]thenmkdir/data/.now
    rsync -aR 1//data/.1/ /data/.1//data/.now/$1/
    /bin/rm -rf $1
    elif [ $input == “no” ] || [ $input == “n” ]
    then
    exit 0
    else
    echo “Only input yes or no”
    exit
    fi
    2.復(fù)雜的實現(xiàn):

    不知道哪個分區(qū)有剩余空間,在刪除之前先計算要刪除的文件或者目錄大小,然后對比系統(tǒng)的磁盤空間,如果夠則按照上面的規(guī)則創(chuàng)建隱藏目錄,并備份,如果沒有足夠空間,要提醒用戶沒有足夠的空間備份并提示是否放棄備份,如果用戶輸入yes,則直接刪除文件或者目錄,如果輸入no,則提示未刪除,然后退出腳本,示例:

    #!/bin/bash
    fileName=$1
    now=date +%Y%m%d%H%M
    f_size=du -sk $1 |awk '{print $1}'
    disk_size=LANG=en; df -k |grep -vi filesystem |awk '{print $4}' |sort -n |tail -n1
    big_filesystem=LANG=en; df -k |grep -vi filesystem |sort -n -k4 |tail -n1 |awk '{print $NF}'

    if [ $f_size -lt $disk_size ]
    then
    read -p "Are you sure delete the file or directory: $1 ? yes|no: " input
    if [ $input == “yes” ] || [ $input == “y” ]
    then
    mkdir -p bigfilesystem/.big_filesystem/.bigf?ilesystem/.now && rsync -aR $1 bigfilesystem/.big_filesystem/.bigf?ilesystem/.now/ && /bin/rm -rf $1
    elif [ $input == “no” ] || [ $input == “n” ]
    then
    exit 0
    else
    echo “Only input ‘yes’ or ‘no’.”
    fi
    else
    echo “The disk size is not enough to backup the file: $1.”
    read -p "Do you want to delete “$1”? yes|no: " input
    if [ $input == “yes” ] || [ $input == “y” ]
    then
    echo “It will delete “$1” after 5 seconds whitout backup.”
    for i in seq 1 5; do echo -ne “.”; sleep 1; done
    echo
    /bin/rm -rf $1
    elif [ $input == “no” ] || [ $input == “n” ]
    then
    echo “It will not delete $1.”
    exit 0
    else
    echo “Only input ‘yes’ or ‘no’.”
    fi
    fi
    【腳本5】數(shù)字求和
    編寫shell腳本,要求輸入一個數(shù)字,然后計算出從1到輸入數(shù)字的和,要求,如果輸入的數(shù)字小于1,則重新輸入,直到輸入正確的數(shù)字為止,示例:

    #!/bin/bash
    while :
    do
    read -p "Please enter a positive integer: " n
    if [ $n -lt 1 ]
    then
    echo “It can’t be less than 1”
    else
    break
    fi
    done

    num=1
    for i in seq 2 $n
    do
    num=[[[num+$i]
    done

    echo $num
    【腳本6】拷貝目錄
    編寫shell腳本,把/root/目錄下的所有目錄(只需要一級)拷貝到/tmp/目錄下:

    #!/bin/bash
    cd /root/
    list=(ls)

    for i in ${list[@]}
    do
    if [ -d $i ]
    then
    cp -r $i /tmp/
    fi
    done
    【腳本7】批量建立用戶
    編寫shell腳本,批量建立用戶user_00, user_01, … user_100并且所有用戶同屬于users組:

    #!/bin/bash
    group=cat /etc/group |grep -o users
    if [ $group == “users” ]
    then
    for i in seq 0 100
    do
    if [ i?lt10]thenuseradd?gusersuser0i -lt 10 ] then useradd -g users user_0i?lt10]thenuseradd?gusersuser0?i
    else
    useradd -g users user_$i
    fi
    done
    else
    echo “users group not found!”
    exit 1
    fi
    刪除以上腳本批量添加的用戶:

    #!/bin/bash
    for i in seq 0 100
    do
    if [ i?lt10]thenuserdel?ruser0i -lt 10 ] then userdel -r user_0i?lt10]thenuserdel?ruser0?i
    else
    userdel -r user_$i
    fi
    done
    【腳本8】每日生成一個文件
    要求:請按照這樣的日期格式(xxxx-xx-xx)每日生成一個文件,例如今天生成的文件為)2017-07-05.log, 并且把磁盤的使用情況寫到到這個文件中,(不用考慮cron,僅僅寫腳本即可)

    #!/bin/bash
    fileName=date +%F
    c=df -h
    echo "c">/root/c" > /root/c">/root/fileName.log
    【腳本9】統(tǒng)計ip
    有一個日志文件,日志片段:如下:

    112.111.12.248 – [25/Sep/2013:16:08:31 +0800]formula-x.haotui.com “/seccode.php?update=0.5593110133088248″ 200″http://formula-x.haotui.com/registerbbs.php” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)”
    61.147.76.51 – [25/Sep/2013:16:08:31 +0800]xyzdiy.5d6d.com “/attachment.php?aid=4554&k=9ce51e2c376bc861603c7689d97c04a1&t=1334564048&fid=9&sid=zgohwYoLZq2qPW233ZIRsJiUeu22XqE8f49jY9mouRSoE71″ 301″http://xyzdiy.×××thread-1435-1-23.html” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)”

    要求: 統(tǒng)計出每個IP的訪問量有多少?

    awk ‘{print $1}’ 1.log |sort -n |uniq -c |sort -n

    解釋:sort -n會按照數(shù)值而不是ASCII碼來排序awk截取出來的IP。然后uniq命令用于報告或忽略文件中的重復(fù)行,加上-c選項后會在每列旁邊顯示該行重復(fù)出現(xiàn)的次數(shù),在這一步就完成了統(tǒng)計。不過最后還得再讓sort -n排序一下uniq -c統(tǒng)計出來的結(jié)果。

    【腳本10】統(tǒng)計內(nèi)存使用
    寫一個腳本計算一下linux系統(tǒng)所有進(jìn)程占用內(nèi)存大小的和。

    實現(xiàn)代碼:

    #!/bin/bash
    count=0

    這個循環(huán)會遍歷出每個進(jìn)程占用的內(nèi)存大小

    for i in ps aux |awk '{print $6}' |grep -v 'RSS'
    do

    將遍歷出來的數(shù)字進(jìn)行累加

    count=[[[count+$i]
    done

    就得到所有進(jìn)程占用內(nèi)存大小的和了

    echo “$count/kb”
    也可以使用awk 一條命令計算:

    ps aux |grep -v ‘RSS TTY’ |awk ‘{sum=sum+$6};END{print sum}’

    解釋:grep -v是忽略 ‘RSS TTY’ 所存在的那一行,后面的awk聲明了一個變量sum,sum將前面命令列出來的數(shù)字進(jìn)行累加,END之后就將累加后的sum打印出來,就得到所有進(jìn)程占用內(nèi)存大小的和了。

    【腳本11】簡單的監(jiān)控腳本
    設(shè)計一個簡單的腳本,監(jiān)控遠(yuǎn)程的一臺機(jī)器(假設(shè)ip為123.23.11.21)的存活狀態(tài),當(dāng)發(fā)現(xiàn)宕機(jī)時發(fā)一封郵件給你自己。

    #!/bin/bash
    ip=“123.23.11.21”
    email=“user@example”

    while 1
    do
    ping -c10 $ip > /dev/null 2>/dev/null
    if [ $? != “0” ]
    then
    # 調(diào)用一個用于發(fā)郵件的腳本
    python /usr/local/sbin/mail.py email"email "email"ip down" “$ip is down”
    fi
    sleep 30
    done
    mail.py 腳本代碼:

    #!/usr/bin/env python
    #-- coding: UTF-8 --
    import os,sys
    reload(sys)
    sys.setdefaultencoding(‘utf8’)
    import getopt
    import smtplib
    from email.MIMEText import MIMEText
    from email.MIMEMultipart import MIMEMultipart
    from subprocess import *
    def sendqqmail(username,password,mailfrom,mailto,subject,content):
    # 郵箱的服務(wù)地址
    gserver = ‘smtp.qq.com’
    gport = 25
    try:
    msg = MIMEText(unicode(content).encode(‘utf-8’))
    msg[‘from’] = mailfrom
    msg[‘to’] = mailto
    msg[‘Reply-To’] = mailfrom
    msg[‘Subject’] = subject
    smtp = smtplib.SMTP(gserver, gport)
    smtp.set_debuglevel(0)
    smtp.ehlo()
    smtp.login(username,password)
    smtp.sendmail(mailfrom, mailto, msg.as_string())
    smtp.close()
    except Exception,err:
    print “Send mail failed. Error: %s” % err
    def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
    #定義QQ郵箱的賬號和密碼,你需要修改成你自己的賬號和密碼
    sendqqmail(‘1234567@qq.com’,‘a(chǎn)aaaaaaaaa’,‘1234567@qq.com’,to,subject,content)
    if name == “main”:
    main()

    #####腳本使用說明######
    #1. 首先定義好腳本中的郵箱賬號和密碼
    #2. 腳本執(zhí)行命令為:python mail.py 目標(biāo)郵箱 “郵件主題” “郵件內(nèi)容”
    【腳本12】批量更改文件名
    需求:

    找到/123目錄下所有后綴名為.txt的文件
    批量修改.txt為.txt.bak
    把所有.bak文件打包壓縮為123.tar.gz
    批量還原文件的名字,即把增加的.bak再刪除
    代碼:

    #!/bin/bash
    now=date +%F_%T
    mkdir /tmp/123_$now
    for txt in ls /123/*.txt
    do
    mv $txt $txt.bak
    for f in $txt
    do
    cp KaTeX parse error: Expected group after '_' at position 17: …xt.bak /tmp/123_?now
    done
    done

    cd /tmp/
    tar czf 123.tar.gz 123_$now/

    for txt in ls /123/*.txt.bak
    do
    name=echo $txt |awk -F '.' '{OFS="."} {print $1,$2}'
    mv $txt $name
    done
    【腳本13】監(jiān)控80端口
    需求:
    寫一個腳本,判斷本機(jī)的80端口(假如服務(wù)為httpd)是否開啟著,如果開啟著什么都不做,如果發(fā)現(xiàn)端口不存在,那么重啟一下httpd服務(wù),并發(fā)郵件通知你自己。腳本寫好后,可以每一分鐘執(zhí)行一次,也可以寫一個死循環(huán)的腳本,30s檢測一次。
    發(fā)郵件的腳本參考【腳本11】的示例代碼。
    代碼:

    #!/bin/bash
    email=“user@example.com”
    if netstat -lntp |grep ‘:80’ |grep ‘httpd’
    then
    echo “80 port no problem”
    exit
    else
    /usr/local/apache2.4/bin/apachectl restart
    python mail.py $email “check_80port” “The 80 port is down.”
    n=ps aux |grep httpd|grep -cv grep

    if [ $n -eq 0 ]
    then
    /usr/local/apache2/bin/apachectl start 2>/tmp/apache_start.err
    fi

    if [ -s /tmp/apache_start.err ]
    then
    python mail.py $mail ‘a(chǎn)pache_start_error’ cat /tmp/apache_start.err
    fi
    fi
    【腳本14】備份數(shù)據(jù)庫
    需求:

    設(shè)計一個shell腳本來備份數(shù)據(jù)庫,首先在本地服務(wù)器上保存一份數(shù)據(jù),然后再遠(yuǎn)程拷貝一份,本地保存一周的數(shù)據(jù),遠(yuǎn)程保存一個月。

    假定,我們知道m(xù)ysql root賬號的密碼,要備份的庫為discuz,本地備份目錄為/bak/mysql, 遠(yuǎn)程服務(wù)器ip為192.168.123.30,遠(yuǎn)程提供了一個rsync服務(wù),備份的地址是 192.168.123.30::backup . 寫完腳本后,需要加入到cron中,每天凌晨3點執(zhí)行。
    腳本代碼:

    #!/bin/bash
    PATH=$PATHi:/usr/local/mysql/bin
    week=date +%w
    today=date +d
    passwd=“123456”
    backdir="/data/mysql"
    r_backupIP=“192.168.123.30::backup”

    exec 1>/var/log/mysqlbak.log 2>/var/log/mysqlbak.log
    echo “mysql backup begin at date +%F %T.”

    本地備份

    mysqldump -uroot -ppasswd??default?character?set=utf8discuz>passwd --default-character-set=utf8 discuz >passwd??default?character?set=utf8discuz>backdir/$week.sql

    同步備份到遠(yuǎn)程機(jī)器

    rsync -az backdir/backdir/backdir/week.sql rbackupIP/r_backupIP/rb?ackupIP/today.sql

    echo “mysql backup end at date +%F %T.”
    然后加入cron
    0 3 * * * /bin/bash /usr/local/sbin/mysqlbak.sh

    【腳本15】自動重啟php-fpm服務(wù)
    服務(wù)器上跑的是LNMP環(huán)境,近期總是有502現(xiàn)象。502為網(wǎng)站訪問的狀態(tài)碼,200正常,502錯誤是nginx最為普通的錯誤狀態(tài)碼。由于502只是暫時的,并且只要一重啟php-fpm服務(wù)則502消失,但不重啟的話,則會一直持續(xù)很長時間。所以有必要寫一個監(jiān)控腳本,監(jiān)控訪問日志的狀態(tài)碼,一旦發(fā)生502,則自動重啟一下php-fpm。

    我們設(shè)定:

    access_log /data/log/access.log
    腳本死循環(huán),每10s檢測一次(假設(shè)每10s鐘的日志條數(shù)為300左右)
    重啟php-fpm的方法是 /etc/init.d/php-fpm restart
    腳本代碼:

    #!/bin/bash
    access_log="/data/log/access.log"
    N=10
    while :
    do

    因為10秒大概產(chǎn)生300條日志記錄

    tail -n300 $access_log > /tmp/log

    拿出log中包含502的日志行數(shù)

    n_502=grep -c "502" /tmp/log

    如果行數(shù)大于10

    if [ $n_502 -ge $N ]
    then
    # 就記錄一下系統(tǒng)狀態(tài)
    top -bn1 > /tmp/date +%H%M%S-top.log
    vmstat 1 5 > /tmp/date +%H%M%S-vm.log
    # 然后才重啟服務(wù),并把錯誤信息重定向
    /etc/init.d/php-fpm restart 2> /dev/null
    # 重啟php-fpm服務(wù)后,應(yīng)先暫緩1分鐘,而后繼續(xù)每隔10s檢測一次
    sleep(60)
    fi
    sleep(10)
    done
    【腳本16】文本替換
    將memcached里的數(shù)據(jù)導(dǎo)出到文件中,然后再導(dǎo)入memcached里卻發(fā)現(xiàn)數(shù)據(jù)過期了,這是因為導(dǎo)出的數(shù)據(jù)是帶有一個時間戳的,這個時間戳就是該條數(shù)據(jù)過期的時間點,如果當(dāng)前時間已經(jīng)超過該時間戳,那么是導(dǎo)入不進(jìn)去的。不過可以修改文件中的時間戳來保證導(dǎo)入時數(shù)據(jù)的有效期??梢詫懸粋€簡單的腳本批量替換這些文件中的時間戳:

    #!/bin/bash
    hour=date -d "+1 hour" +%s # 一個小時之后的時間戳
    data_time=cat data.txt |grep add |awk '{print $4}' |sort -n |uniq
    for i in datatimedosed?i"s/data_time do sed -i "s/datat?imedosed?i"s/i/$hour/g" grep $i -rl /root/data.txt
    done
    【腳本17】啟動容器
    docker每次關(guān)閉都會連帶著將運(yùn)行中的容器關(guān)閉,所以每次啟動docker后都需要逐個去啟動容器,很麻煩,由于是實驗用的虛擬機(jī)不是線上的機(jī)器,所以就直接寫了一個很簡單的循環(huán)來啟動容器:

    #!/bin/bash
    /usr/bin/systemctl start docker

    for i in docker ps -a |grep 'Exited' |awk '{print $1}'
    do
    /usr/bin/docker start $i
    done
    【腳本18】刪除文本中的字母
    要求:把一個文本文檔的前5行中包含字母的行刪除掉,同時把6到10行中的全部字母刪除掉。

    參考答案:假設(shè)文本名字叫做1.txt,并且文本行數(shù)大于10,腳本如下:

    #!/bin/bash

    先獲取該文本的行數(shù)

    rows=wc -l 1.txt |awk '{print $1}'

    對前5行進(jìn)行處理

    for i in seq 1 5
    do

    使用sed把每一行的內(nèi)容賦值給變量

    row=sed -n "$i"p 1.txt

    用grep 判定是否匹配字母,-v取反,-q不輸出內(nèi)容

    if echo $row |grep -vq ‘[a-zA-Z]’
    then
    echo $row
    fi
    done

    對6-10行做刪除字母處理

    for i in seq 6 10
    do
    row=sed -n "$i"p 1.txt
    echo $row |sed ‘s/[a-zA-Z]//g’
    done

    剩余的直接輸出

    for i in seq 11 $rows
    do
    sed -n "$i"p 1.txt
    done

    ##若想把更改內(nèi)容寫入到1.txt,還需要把以上內(nèi)容重定向到一個文本中,然后刪除1.txt,再把剛剛重定向的文件更名為1.txt
    【腳本19】查找字母數(shù)小于6的單詞
    用shell打印下面這句話中字母數(shù)小于6的單詞。
    Bash also interprets a number of multi-character options.

    腳本如下:

    #!/bin/bash
    for s in Bash also interprets a number of multi-character options
    do
    n=echo $s |wc -c
    if [ $n -lt 6 ]
    then
    echo $s
    fi
    done
    【腳本20】輸入數(shù)字執(zhí)行對應(yīng)命令
    寫一個腳本實現(xiàn)如下功能: 輸入一個數(shù)字,然后運(yùn)行對應(yīng)的一個命令。顯示命令如下:

    cmd meau* 1—date 2–ls 3–who 4–pwd

    當(dāng)輸入1時,會運(yùn)行date, 輸入2時運(yùn)行l(wèi)s, 依此類推。

    實現(xiàn)腳本如下:

    #!/bin/bash
    echo “cmd meau* 1—date 2–ls 3–who 4–pwd”

    read -p "please input a number 1-4: " n
    case $n in
    1)
    date
    ;;
    2)
    ls
    ;;
    3)
    who
    ;;
    4)
    pwd
    ;;
    *)
    echo “Please input a number: 1-4”
    ;;
    esac
    【腳本21】批量創(chuàng)建用戶并設(shè)置密碼
    用shell腳本實現(xiàn)如下需求:
    添加user_00 – user_09 10個用戶,并且給他們設(shè)置一個隨機(jī)密碼,密碼要求10位包含大小寫字母以及數(shù)字,注意需要把每個用戶的密碼記錄到一個日志文件里。

    提示:

    隨機(jī)密碼使用命令 mkpasswd
    在腳本中給用戶設(shè)置密碼,可以使用echo 然后管道passwd命令
    實現(xiàn)腳本如下:

    #!/bin/bash
    for i in seq 00 09
    do
    useradd user_KaTeX parse error: Expected group after '_' at position 43: …` echo "user_?i $p" >> /tmp/user0_9.pw
    echo KaTeX parse error: Expected group after '_' at position 22: …swd -stdin user_?i
    done
    【腳本22】監(jiān)控httpd進(jìn)程
    在服務(wù)器上,寫一個監(jiān)控腳本。

    每隔10s去檢測一次服務(wù)器上的httpd進(jìn)程數(shù),如果大于等于500的時候,就需要自動重啟一下apache服務(wù),并檢測啟動是否成功?
    若沒有正常啟動還需再一次啟動,最大不成功數(shù)超過5次則需要理解發(fā)郵件通知管理員,并且以后不需要再檢測!
    如果啟動成功后,1分鐘后再次檢測httpd進(jìn)程數(shù),若正常則重復(fù)之前操作(每隔10s檢測一次),若還是大于等于500,那放棄重啟并需要發(fā)郵件給管理員,然后自動退出該腳本。假設(shè)其中發(fā)郵件腳本為mail.py
    實現(xiàn)腳本如下:

    #!/bin/bash

    check_service(){
    n=0
    for i in seq 1 5
    do
    # apachectl命令所在路徑
    /usr/local/apache2/bin/apachectl restart 2> /tmp/apache.err
    if [??ne0]thenn=? -ne 0 ] then n=??ne0]thenn=[$n-1]
    else
    break
    fi
    done

    if [ $n -eq 5 ]
    then
    ## mail.py的內(nèi)容參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py
    python mail.py “123@qq.com” “httpd service down” cat /tmp/apache.err
    exit
    fi
    }

    while :
    do
    t_n=ps -C httpd --no-heading |wc -l
    if [ $t_n -ge 500 ]
    then
    /usr/local/apache2/bin/apachectl restart
    if [ $? -ne 0 ]
    then
    check_service
    fi
    sleep 60
    t_n=ps -C httpd --no-heading |wc -l
    if [ $t_n -ge 500]
    then
    python mail.py “123@qq.com” “httpd service somth wrong” “the httpd process is budy.”
    exit
    fi
    fi
    sleep 10
    done
    【腳本23】封ip
    需求: 根據(jù)web服務(wù)器上的訪問日志,把一些請求量非常高的ip給拒絕掉!

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

    比如, 我們可以每一分鐘去查看一下日志,把上一分鐘的日志給過濾出來分析,并且只要請求的ip數(shù)量超過100次那么就直接封掉。 而解封的時間又規(guī)定為每半小時分析一次,把幾乎沒有請求量的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)”
    腳本實現(xiàn)如下:

    #!/bin/bash

    日志文件路徑

    log_file="/home/logs/client/access.log"

    當(dāng)前時間減一分鐘的時間

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

    當(dāng)前時間的分鐘段

    d2=date +%M

    iptables命令所在的路徑

    ipt="/sbin/iptables"

    用于存儲訪問日志里的ip

    ips="/tmp/ips.txt"

    封ip

    block(){

    把日志文件中的ip過濾出來,去掉重復(fù)的ip,并統(tǒng)計ip的重復(fù)次數(shù)以及對ip進(jìn)行排序,最后將結(jié)果寫到一個文件中

    grep “$d1:” $log_file |awk ‘{print $1}’ |sort -n |uniq -c |sort -n > $ips

    將文件里重復(fù)次數(shù)大于100的ip迭代出來

    for ip in awk '$1 > 100 {print $2}' $ips
    do
    ## 通過防火墻規(guī)則對這些ip進(jìn)行封禁
    $ipt -I INPUT -p -tcp --dport 80 -s $ip -j REJECT
    ## 將已經(jīng)封禁的ip輸出到一個文件里存儲
    echo "date +%F-%T $ip" >> /tmp/badip.txt
    done
    }

    解封ip

    unblock(){

    將流量小于15的規(guī)則索引過濾出來

    for i in $ipt -nvL --line-number |grep '0.0.0.0/0' |awk '$2 < 15 {print $1}' |sort -nr
    do
    ## 通過索引來刪除規(guī)則
    $ipt -D INPUT $i
    done

    清空規(guī)則中的數(shù)據(jù)包計算器和字節(jié)計數(shù)器

    $ipt -Z
    }

    為整點或30分鐘就是過了半個小時,就需要再進(jìn)行分析

    if [ $d2 == “00” ] || [ $d2 == “30” ]
    then
    unblock
    block
    else
    block
    fi
    【腳本24】部署前端項目
    最近做了一個web前端的項目,需要編寫一個腳本完成項目的上線。

    腳本實現(xiàn)如下:

    #!/bin/bash

    使用方法:

    mmall:front_deploy.sh mmall-fe

    admin:front_deploy.sh admin-fe

    GIT_HOME=/developer/git-repository/ # 從git倉庫拉取下來的源碼的存放路徑
    DEST_PATH=/product/frontend/ # 項目打包后的發(fā)布路徑

    cd dir

    if [ ! -n “$1” ]
    then
    echo -e “請輸入要發(fā)布的項目!”
    exit
    fi

    if [ $1 = “mmall-fe” ]
    then
    echo -e “=Enter mall-fe===”
    cd $GIT_HOME$1
    elif [ $1 = “admin-fe” ]
    then
    echo -e “=Enter mall-fe===”
    cd $GIT_HOME$1
    else
    echo -e “輸入的項目名沒有找到!”
    exit
    fi

    clear git dist

    echo -e “=Clear Git Dist===”
    rm -rf ./dist

    git操作

    echo -e “=git checkout master===”
    git checkout master

    echo -e “=git pull===”
    git pull

    npm install

    echo -e “=npm install===”
    npm install --registry=https://registry.npm.taobao.org

    npm run dist

    echo -e “=npm run dist===”
    npm run dist

    if [ -d “./dist” ]
    then
    # backup dest
    echo -e “=dest backup===”
    mv $DEST_PATH$1/dist $DEST_PATH$1/dist.bak

    # copy echo -e "===========copy=============" cp -R ./dist $DEST_PATH$1# echo result echo -e "===========Deploy Success============="

    else
    echo -e “=Deploy Error===”
    fi
    【腳本25】找規(guī)律打印數(shù)字
    請詳細(xì)查看如下幾個數(shù)字的規(guī)律,并使用shell腳本輸出后面的十個數(shù)字。

    10 31 53 77 105 141 …….

    試題解析:
    我想大多數(shù)人都會去比較這些數(shù)字的差值:

    10 31 53 77 105 141
    21 22 24 28 36
    但是這個差值看,并沒有什么規(guī)律,而我們再仔細(xì)看的時候,發(fā)現(xiàn)這個差值的差值是有規(guī)律的:

    10 31 53 77 105 141
    21 22 24 28 36
    1 2 4 8
    腳本實現(xiàn):

    #! /bin/bash
    x=21
    m=10
    echo mforiin‘seq014‘;doj=m for i in `seq 0 14`; do j=mforiinseq014;doj=[2**i]m=i] m=i]m=[m+m+m+x]
    echo mx=m x=mx=[x+x+x+j]
    done
    【腳本26】統(tǒng)計普通用戶
    寫個shell,看看你的Linux系統(tǒng)中是否有自定義用戶(普通用戶),若是有,一共有幾個?

    假設(shè)所有普通用戶都是uid大于1000的

    腳本實現(xiàn):

    #!/bin/bash
    n=awk -F ':' '$3>1000' /etc/passwd|wc -l
    if [ $n -gt 0 ]
    then
    echo “There are $n common users.”
    else
    echo “No common users.”
    fi
    【腳本27】監(jiān)控磁盤使用率
    寫一個shell腳本,檢測所有磁盤分區(qū)使用率和inode使用率并記錄到以當(dāng)天日期為命名的日志文件里,當(dāng)發(fā)現(xiàn)某個分區(qū)容量或者inode使用量大于85%時,發(fā)郵件通知你自己。

    思路:就是先df -h 然后過濾出已使用的那一列,然后再想辦法過濾出百分比的整數(shù)部分,然后和85去比較,同理,inode也是一樣的思路。

    實現(xiàn)代碼:

    #!/bin/bash

    This script is for record Filesystem Use%,IUse% everyday and send alert mail when % is more than 85%.

    log=/var/log/disk/date +%F.log
    date +’%F %T’ > $log
    df -h >> $log
    echo >> $log
    df -i >> $log

    for i in df -h|grep -v 'Use%'|sed 's/%//'|awk '{print $5}'; do
    if [ $i -gt 85 ]; then
    use=df -h|grep -v 'Use%'|sed 's/%//'|awk '$5=='$i' {print $1,$5}'
    echo “$use” >> use
    fi
    done
    if [ -e use ]; then

    ##這里可以使用咱們之前介紹的mail.py發(fā)郵件
    mail -s “Filesystem Use% check” root@localhost < use
    rm -rf use
    fi

    for j in df -i|grep -v 'IUse%'|sed 's/%//'|awk '{print $5}'; do
    if [ $j -gt 85 ]; then
    iuse=df -i|grep -v 'IUse%'|sed 's/%//'|awk '$5=='$j' {print $1,$5}'
    echo “$iuse” >> iuse
    fi
    done
    if [ -e iuse ]; then
    mail -s “Filesystem IUse% check” root@localhost < iuse
    rm -rf iuse
    fi
    思路:

    df -h、df -i 記錄磁盤分區(qū)使用率和inode使用率,date +%F 日志名格式
    取出使用率(第5列)百分比序列,for循環(huán)逐一與85比較,大于85則記錄到新文件里,當(dāng)for循環(huán)結(jié)束后,匯總超過85的一并發(fā)送郵件(郵箱服務(wù)因未搭建,發(fā)送本地root賬戶)。
    此腳本正確運(yùn)行前提:

    該系統(tǒng)沒有邏輯卷的情況下使用,因為邏輯卷df -h、df -i 時,使用率百分比是在第4列,而不是第5列。如有邏輯卷,則會漏統(tǒng)計邏輯卷使用情況。
    【腳本28】獲取文件列表
    有一臺服務(wù)器作為web應(yīng)用,有一個目錄(/data/web/attachment)不定時地會被用戶上傳新的文件,但是不知道什么時候會上傳。所以,需要我們每5分鐘做一次檢測是否有新文件生成。

    請寫一個shell腳本去完成檢測。檢測完成后若是有新文件,還需要將新文件的列表輸出到一個按年、月、日、時、分為名字的日志里。請不要想的太復(fù)雜,核心命令只有一個 find /data/web/attachment -mmin -5

    思路: 每5分鐘檢測一次,那肯定需要有一個計劃任務(wù),每5分鐘去執(zhí)行一次。腳本檢測的時候,就是使用find命令查找5分鐘內(nèi)有過更新的文件,若是有更新,那這個命令會輸出東西,否則是沒有輸出的。固,我們可以把輸出結(jié)果的行數(shù)作為比較對象,看看它是否大于0。

    實現(xiàn)代碼:

    #!/bin/bash
    d=date -d "-5 min" +%Y%m%d%H%M
    basedir=/data/web/attachment
    find $basedir/ -type f -mmin -5 > /tmp/newf.txt
    n=wc -l /tmp/newf.txt
    if [ n?gt0];then/bin/mv/tmp/newf.txt/tmp/n -gt 0 ]; then /bin/mv /tmp/newf.txt /tmp/n?gt0];then/bin/mv/tmp/newf.txt/tmp/d

    fi
    【腳本29】統(tǒng)計常用命令
    寫一個shell腳本來看看你使用最多的命令是哪些,列出你最常用的命令top10。

    思路:我們要用到一個文件就是.bash_history,然后再去sort、uniq,剩下的就不用我多說了吧。很簡單一個shell。

    一條命令即可:
    sort /root/.bash_history |uniq -c |sort -nr |head

    【腳本30】統(tǒng)計日志大小
    假如我們需要每小時都去執(zhí)行你寫的腳本。在腳本中實現(xiàn)這樣的功能,當(dāng)時間是0點和12點時,需要將目錄/data/log/下的文件全部清空,注意只能清空文件內(nèi)容而不能刪除文件。而其他時間只需要統(tǒng)計一下每個文件的大小,一個文件一行,輸出到一個按日期和時間為名字的日志里。 需要考慮/data/log/目錄下的二級、三級、… 等子目錄里面的文件。

    實現(xiàn)代碼:

    #!/bin/bash

    logdir="/data/log"
    t=date +%H
    d=date +%F-%H
    [ -d /tmp/log_size ] || mkdir /tmp/log_size
    for log in find $logdir -type f
    do
    if [ $t == “0” ] || [ $t == “12” ]
    then
    true > $log
    else
    du -sh log>>/tmp/logsize/log >>/tmp/log_size/log>>/tmp/logs?ize/d
    fi
    done
    【腳本31】統(tǒng)計數(shù)字并求和
    計算文檔a.txt中每一行中出現(xiàn)的數(shù)字個數(shù)并且要計算一下整個文檔中一共出現(xiàn)了幾個數(shù)字。例如a.txt內(nèi)容如下:

    12aa*lkjskdj
    alskdflkskdjflkjj
    我們腳本名字為 ncount.sh, 運(yùn)行它時:

    bash ncount.sh a.txt
    輸入結(jié)果應(yīng)該為:

    2
    0
    sum:2
    實現(xiàn)代碼:

    #!/bin/bash

    n=wc -l a.txt|awk '{print $1}'
    sum=0
    for i in seq 1 $n
    do
    line=sed -n "$i"p a.txt
    n_n=echo -n $line|sed 's/[^0-9]//g'|wc -c
    echo line $i number: nnsum=n_n sum=nn?sum=[sum+sum+sum+n_n]
    done

    echo sum is $sum
    【腳本32】檢測文件改動
    有兩臺Linux服務(wù)器A和B,假如A可以直接ssh到B,不用輸入密碼。A和B都有一個目錄叫做/data/web/ 這下面有很多文件,當(dāng)然我們不知道具體有幾層子目錄,假若之前A和B上該目錄下的文件都是一模一樣的。但現(xiàn)在不確定是否一致了。固需要我們寫一個腳本實現(xiàn)這樣的功能,檢測A機(jī)器和B機(jī)器/data/web/目錄下文件的異同,我們以A機(jī)器上的文件作為標(biāo)準(zhǔn)。比如,假若B機(jī)器少了一個a.txt文件,那我們應(yīng)該能夠檢測出來,或者B機(jī)器上的b.txt文件有過改動,我們也應(yīng)該能夠檢測出來(B機(jī)器上多了文件我們不用考慮)。

    提示: 使用核心命令 md5sum a.txt 算出md5值,去和B機(jī)器上的比較。

    實現(xiàn)代碼:

    #!/bin/bash
    #假設(shè)A機(jī)器到B機(jī)器已經(jīng)做了無密碼登錄設(shè)置
    dir=/data/web
    ##假設(shè)B機(jī)器的IP為192.168.0.100
    B_ip=192.168.0.100
    find $dir -type f |xargs md5sum >/tmp/md5.txt
    ssh $B_ip “find $dir -type f |xargs md5sum >/tmp/md5_b.txt”
    scp $B_ip:/tmp/md5_b.txt /tmp
    for f in awk '{print $2}' /tmp/md5.txt
    do
    if grep -q “$f” /tmp/md5_b.txt
    then
    md5_a=grep $f /tmp/md5.txt|awk '{print $1}'
    md5_b=grep $f /tmp/md5_b.txt|awk '{print $1}'
    if [ $md5_a != md5b]thenecho"md5_b ] then echo "md5b?]thenecho"f changed."
    fi
    else
    echo "$f deleted. "
    fi
    done
    【腳本33】統(tǒng)計網(wǎng)卡流量
    寫一個腳本,檢測你的網(wǎng)絡(luò)流量,并記錄到一個日志里。需要按照如下格式,并且一分鐘統(tǒng)計一次(只需要統(tǒng)計外網(wǎng)網(wǎng)卡,假設(shè)網(wǎng)卡名字為eth0):

    2017-08-04 01:11
    eth0 input: 1000bps
    eth0 output : 200000bps
    ################
    2017-08-04 01:12
    eth0 input: 1000bps
    eth0 output : 200000bps
    提示:使用sar -n DEV 1 59 這樣可以統(tǒng)計一分鐘的平均網(wǎng)卡流量,只需要最后面的平均值。另外,注意換算一下,1byt=8bit

    實現(xiàn)代碼:

    #!/bin/bash

    while :
    do
    LANG=en
    DATE=date +"%Y-%m-%d %H:%M"
    LOG_PATH=/tmp/traffic_check/date +%Y%m
    LOG_FILE=$LOG_PATH/traffic_check_date +%d.log
    [ -d $LOG_PATH ] || mkdir -p $LOG_PATH
    echo " $DATE" >> $LOG_FILE
    sar -n DEV 1 59|grep Average|grep eth0 \
    |awk ‘{print “\n”,$2,"\t",“input:”,$510008,“bps”,
    “\t”,"\n",$2,"\t",“output:”,$610008,“bps” }’ \
    >> $LOG_FILE
    echo “#####################” >> $LOG_FILE
    done
    【腳本34】系統(tǒng)-批量殺進(jìn)程
    今天發(fā)現(xiàn)網(wǎng)站訪問超級慢,top看如下:

    101個shell腳本
    有很多sh進(jìn)程,再ps查看:

    101個shell腳本
    這個腳本,運(yùn)行很慢,因為制定了cron,上一次還沒有運(yùn)行完,又有了新的運(yùn)行任務(wù)。太多肯定會導(dǎo)致系統(tǒng)負(fù)載升高。當(dāng)務(wù)之急就是先把這些在跑的給kill掉。那么我們可以使用一條命令,直接殺死所有的sh。

    命令如下:

    ps aux |grep clearmem.sh |grep -v grep|awk ‘{print $2}’|xargs kill
    【腳本35】判斷是否開啟80端口
    寫一個腳本判斷你的Linux服務(wù)器里是否開啟web服務(wù)?(監(jiān)聽80端口)如果開啟了,請判斷出跑的是什么服務(wù),是httpd呢還是nginx又或者是其他的什么?

    實現(xiàn)代碼:

    #!/bin/bash
    port=netstat -lnp | grep 80
    if [ -z “port” ]; then
    echo “not start service.”;
    exit;
    fi
    web_server=echo $port | awk -F'/' '{print $2}'|awk -F : '{print $1}'
    case $web_server in
    httpd )
    echo “apache server.”
    ;;
    nginx )
    echo “nginx server.”
    ;;

    • )
      echo “other server.”
      ;;
      esac
      【腳本36】監(jiān)控mysql服務(wù)
      假設(shè),當(dāng)前MySQL服務(wù)的root密碼為123456,寫腳本檢測MySQL服務(wù)是否正常(比如,可以正常進(jìn)入mysql執(zhí)行show processlist),并檢測一下當(dāng)前的MySQL服務(wù)是主還是從,如果是從,請判斷它的主從服務(wù)是否異常。如果是主,則不需要做什么。

    實現(xiàn)代碼:

    #!/bin/bash
    Mysql_c=“mysql -uroot -p123456”
    $Mysql_c -e “show processlist” >/tmp/mysql_pro.log 2>/tmp/mysql_log.err
    n=wc -l /tmp/mysql_log.err|awk '{print $1}'

    if [ $n -gt 0 ]
    then
    echo “mysql service sth wrong.”
    else

    $Mysql_c -e "show slave status\G" >/tmp/mysql_s.log n1=`wc -l /tmp/mysql_s.log|awk '{print $1}'`if [ $n1 -gt 0 ] theny1=`grep 'Slave_IO_Running:' /tmp/mysql_s.log|awk -F : '{print $2}'|sed 's/ //g'`y2=`grep 'Slave_SQL_Running:' /tmp/mysql_s.log|awk -F : '{print $2}'|sed 's/ //g'`if [ $y1 == "Yes" ] && [ $y2 == "Yes" ]thenecho "slave status good."elseecho "slave down."fi fi

    fi
    【腳本37】帶選項的用戶腳本
    要求如下:

    只支持三個選項 ‘–del’ ‘–add’ –help輸入其他選項報錯。
    使用‘–add’需要驗證用戶名是否存在,存在則反饋存在。且不添加。 不存在則創(chuàng)建該用戶,切>添加與該用戶名相同的密碼。并且反饋。
    使用‘–del’ 需要驗證用戶名是否存在,存在則刪除用戶及其家目錄。不存在則反饋該用戶不存>在。
    –help 選項反饋出使用方法
    支持以,分隔 一次刪除多個或者添加多個用戶。
    能用echo $? 檢測腳本執(zhí)行情況 成功刪除或者添加為0,報錯信息為其他數(shù)字。
    能以,分割。一次性添加或者 刪除多個用戶。 例如 adddel.sh –add user1,user2,user3…….
    不允許存在明顯bug。
    代碼參考:

    #!/bin/bash
    #written by aming.

    if [ $# -eq 0 -o $# -gt 2 ]
    then
    echo “use $0 --add username or $0 --del username or $0 --help.”
    exit 1
    fi

    case $1 in
    –add)
    n=0
    for u in echo $2|sed 's/,/ /g'; do
    if awk -F: '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}?' /etc/passwd |…u"
    then
    echo “The user $u exist.”
    else
    useradd uecho?e"u echo -e "uecho?e"u\n$u"|passwd $u >/dev/null 2>&1
    echo "The user uaddedsuccessfully."n=u added successfully." n=uaddedsuccessfully."n=[$n+1]
    fi
    done

    if [ $n -eq 0 ]; thenexit 2fi;;--del)n=0for u in `echo $2|sed 's/,/ /g'`; doif awk -F: '{print $1}' /etc/passwd|grep -qw "$u"thenuserdel -r $uecho "The user $u deleted successfully."n=$[$n+1]elseecho "The user $u not exist."fidoneif [ $n -eq 0 ]; thenexit 3fi;;--help)echo -e "--add can add user,and the passwd is the same as username. It can add multiuser such as --add user1,user2,user3..."echo "--del cat delete user.It can delete user such as --del user1,user2,user3...";;*)echo "use $0 --add username or $0 --del username or $0 --help."exit 1;;

    esac
    【腳本38】被3整除
    寫一個腳本: 計算100以內(nèi)所有能被3整除的正整數(shù)的和

    代碼參考:

    #!/bin/bash
    sum=0
    for i in {1…100};do
    if [ [[[i%3] -eq 0 ];then
    sum=[[[i+$sum]
    fi
    done

    echo “sum:$sum”
    【腳本39】腳本傳參
    使用傳參的方法寫個腳本,實現(xiàn)加減乘除的功能。例如: sh a.sh 1 2,這樣會分別計算加、減、乘、除的結(jié)果。

    要求:

    腳本需判斷提供的兩個數(shù)字必須為整數(shù)
    當(dāng)做減法或者除法時,需要判斷哪個數(shù)字大
    減法時需要用大的數(shù)字減小的數(shù)字
    除法時需要用大的數(shù)字除以小的數(shù)字,并且結(jié)果需要保留兩個小數(shù)點。
    參考代碼:

    #!/bin/bash

    if [ $# -ne 2 ]
    then
    echo “The number of parameter is not 2, Please useage: ./$0 1 2”
    exit 1
    fi

    is_int()
    {
    if echo “$1”|grep -q ‘[^0-9]’
    then
    echo “$1 is not integer number.”
    exit 1
    fi
    }

    max()
    {
    if [ $1 -ge $2 ]
    then
    echo $1
    else
    echo $2
    fi
    }

    min()
    {
    if [ $1 -lt $2 ]
    then
    echo $1
    else
    echo $2
    fi
    }

    sum()
    {
    echo “$1 + $2 = $[$1+$2]”
    }

    minus()
    {
    big=max $1 $2
    small=min $1 $2
    echo “$big - $small = [[[big-$small]”
    }

    mult()
    {
    echo “$1 * $2 = $[$1*$2]”
    }

    div()
    {
    big=max $1 $2
    small=min $1 $2
    d=echo "scale =2; $big / $small"|bc
    echo “$big / $small = $d”
    }

    is_int $1
    is_int $2
    sum $1 $2
    minus $1 $2
    mult $1 $2
    div $1 $2
    【腳本40】用戶交互腳本
    寫一個腳本,執(zhí)行后,打印一行提示“Please input a number:”,要求用戶輸入數(shù)值,然后打印出該數(shù)值,然后再次要求用戶輸入數(shù)值。直到用戶輸入”end”停止。

    代碼參考:

    #!/bin/bash

    while :
    do
    read -p "Please input a number:(end for exit) " n
    num=echo $n |sed -r 's/[0-9]//g'|wc -c
    if [ $n == “end” ]
    then
    exit
    elif [ $num -ne 1 ]
    then
    echo “what you input is not a number!Try again!”
    else
    echo “your input number is: $n”
    fi
    done
    【腳本41】獲取ip
    提示用戶輸入網(wǎng)卡的名字,然后我們用腳本輸出網(wǎng)卡的ip。 看似簡單,但是需要考慮多個方面,比如我們輸入的不符合網(wǎng)卡名字的規(guī)范,怎么應(yīng)對。名字符合規(guī)范,但是根本就沒有這個網(wǎng)卡有怎么應(yīng)對。

    代碼參考:

    #!/bin/bash
    while :
    do
    read -p "請輸入網(wǎng)卡名: " e
    e1=echo "$e" | sed 's/[-0-9]//g'
    e2=echo "$e" | sed 's/[a-zA-Z]//g'
    if [ -z $e ]
    then
    echo “你沒有輸入任何東西”
    continue
    elif [ -z $e1 ]
    then
    echo “不要輸入純數(shù)字在centos中網(wǎng)卡名是以eth開頭后面加數(shù)字”
    continue
    elif [ -z $e2 ]
    then
    echo “不要輸入純字母在centos中網(wǎng)卡名是以eth開頭后面加數(shù)字”
    continue
    else
    break
    fi
    done

    ip() {
    ifconfig | grep -A1 "$1 " |tail -1 | awk ‘{print $2}’ | awk -F “:” ‘{print $2}’
    }

    myip=ip $e
    if [ -z myip]thenecho"抱歉,沒有這個網(wǎng)卡。"elseecho"你的網(wǎng)卡IP地址是myip ] then echo "抱歉,沒有這個網(wǎng)卡。" else echo "你的網(wǎng)卡IP地址是myip]thenecho"網(wǎng)。"elseecho"網(wǎng)IPmyip"
    fi
    【腳本42】列出子目錄
    腳本的功能:
    腳本可以帶參數(shù)也可以不帶,參數(shù)可以有多個,每個參數(shù)必須是一個目錄,腳本檢查參數(shù)個數(shù),若等于0,則列出當(dāng)前目錄本身;否則,顯示每個參數(shù)包含的子目錄。

    參考代碼:

    #!/bin/bash
    if [ $# == 0 ]
    then
    ls -ld pwd
    else
    for i in seq 1 $#
    do
    a=$i
    echo “l(fā)s ${!a}”
    ls -l ${!a} |grep ‘^d’
    done
    fi
    標(biāo)注:

    你可能會對${!a}有疑問,這里是一個特殊用法,在shell中,$1為第一個參數(shù),$2為第二個參數(shù),以此類推,那么這里的數(shù)字要是一個變量如何表示呢?比如n=3,我想取第三個參數(shù),能否寫成 $n?shell中是不支持的,那怎么辦?就用腳本中的這種方法:a=n? shell中是不支持的,那怎么辦? 就用腳本中的這種方法: a=nshella=n, echo ${!a}
    【腳本43】下載文件
    創(chuàng)建一個函數(shù),能接受兩個參數(shù):

    第一個參數(shù)為URL,即可下載的文件;第二個參數(shù)為目錄,即下載后保存的位置;
    如果用戶給的目錄不存在,則提示用戶是否創(chuàng)建;如果創(chuàng)建就繼續(xù)執(zhí)行,否則,函數(shù)返回一個51的錯誤值給調(diào)用腳本;
    如果給的目錄存在,則下載文件;下載命令執(zhí)行結(jié)束后測試文件下載成功與否;如果成功,則>返回0給調(diào)用腳本,否則,返回52給調(diào)用腳本;
    提示,在函數(shù)中返回錯誤值給調(diào)用腳本,使用return

    參考代碼:

    #!/bin/bash

    if [ ! -d $2 ]
    then
    echo “please make directory”
    exit 51
    fi

    cd $2
    wget $1

    n=echo $?
    if [ $n -eq 0 ];then
    exit 0
    else
    exit 52
    fi
    【腳本44】猜數(shù)字
    寫一個猜數(shù)字腳本,當(dāng)用戶輸入的數(shù)字和預(yù)設(shè)數(shù)字(隨機(jī)生成一個小于100的數(shù)字)一樣時,直接退出,否則讓用戶一直輸入,并且提示用戶的數(shù)字比預(yù)設(shè)數(shù)字大或者小。

    參考代碼:

    #!/bin/bash
    m=echo $RANDOM
    n1=[[[m%100]
    while :
    do
    read -p "Please input a number: " n
    if [ $n == $n1 ]
    then
    break
    elif [ $n -gt $n1 ]
    then
    echo “bigger”
    continue
    else
    echo “smaller”
    continue
    fi
    done
    echo “You are right.”
    【腳本45】抽簽?zāi)_本
    1、寫一個腳本執(zhí)行后,輸入名字,產(chǎn)生隨機(jī)數(shù)01-99之間的數(shù)字。
    2、如果相同的名字重復(fù)輸入,抓到的數(shù)字還是第一次抓取的結(jié)果,
    3、前面已經(jīng)抓到的數(shù)字,下次不能在出現(xiàn)相同數(shù)字。
    4、第一個輸入名字后,屏幕輸出信息,并將名字和數(shù)字記錄到文件里,程序不能退出
    繼續(xù)等待別的學(xué)生輸入。

    參考代碼:

    while :
    do
    read -p “Please input a name:” name
    if [ -f /work/test/1.log ];then
    bb=cat /work/test/1.log | awk -F: '{print $1}' | grep "$name"

    if [ "$bb" != "$name" ];then #名字不重復(fù)情況下aa=`echo $RANDOM | awk -F "" '{print $2 $3}'`while :dodd=`cat /work/test/1.log | awk -F: '{print $2}' | grep "$aa"`if [ "$aa" == "$dd" ];then #數(shù)字已經(jīng)存在情況下echo "數(shù)字已存在."aa=`echo $RANDOM | awk -F "" '{print $2 $3}'`elsebreakfidoneecho "$name:$aa" | tee -a /work/test/1.logelseaa=`cat /work/test/1.log | grep "$name" | awk -F: '{print $2}'` #名字重復(fù)echo $aaecho "重復(fù)名字."fi

    else
    aa=echo $RANDOM | awk -F "" '{print $2 $3}'
    echo “name:name:name:aa” | tee -a /work/test/1.log
    fi
    done
    【腳本46】打印只有一個數(shù)字的行
    如題,把一個文本文檔中只有一個數(shù)字的行給打印出來。

    參考代碼:

    #!/bin/bash

    f=/etc/passwd
    line=wc -l $f|awk '{print $1}'
    for l in seq 1 $line; do
    n=sed -n "$l"p $f|grep -o '[0-9]'|wc -l;
    if [ n?eq1];thensed?n"n -eq 1 ]; then sed -n "n?eq1];thensed?n"l"p $f
    fi
    done
    【腳本47】日志歸檔
    類似于日志切割,系統(tǒng)有個logrotate程序,可以完成歸檔。但現(xiàn)在我們要自己寫一個shell腳本實現(xiàn)歸檔。

    舉例: 假如服務(wù)的輸出日志是1.log,我要求每天歸檔一個,1.log第二天就變成1.log.1,第三天1.log.2, 第四天 1.log.3 一直到1.log.5

    參考答案:

    #!/bin/bash

    function e_df()
    {
    [ -f $1 ] && rm -f $1
    }

    for i in seq 5 -1 2
    do
    i2=[[[i-1]
    e_df /data/1.log.iif[?f/data/1.log.i if [ -f /data/1.log.iif[?f/data/1.log.i2 ]
    then
    mv /data/1.log.i2/data/1.log.i2 /data/1.log.i2/data/1.log.i
    fi
    done

    e_df /data/1.log.1
    mv /data/1.log /data/1.log.1
    【腳本48】找出活動ip
    寫一個shell腳本,把192.168.0.0/24網(wǎng)段在線的ip列出來。
    思路: for循環(huán), 0.1 — 0.254 依次去ping,能通說明在線。

    參考代碼:

    #!/bin/bash

    ips=“192.168.1.”
    for i in seq 1 254
    do

    ping -c 2 ipsipsipsi >/dev/null 2>/dev/null
    if [ $? == 0 ]
    then
    echo “echo ipsipsipsi is online”
    else
    echo “echo ipsipsipsi is not online”
    fi
    done
    【腳本49】檢查錯誤
    寫一個shell腳本,檢查指定的shell腳本是否有語法錯誤,若有錯誤,首先顯示錯誤信息,然后提示用戶輸入q或者Q退出腳本,輸入其他內(nèi)容則直接用vim打開該shell腳本。

    提醒: 檢查shell腳本有沒有語法錯誤的命令是 sh -n xxx.sh

    參考代碼:

    #!/bin/bash
    sh -n $1 2>/tmp/err
    if [ $? -eq “0” ]
    then
    echo “The script is OK.”
    else
    cat /tmp/err
    read -p "Please inpupt Q/q to exit, or others to edit it by vim. " n
    if [ -z $n ]
    then
    vim $1
    exit
    fi
    if [ $n == “q” -o $n == “Q” ]
    then
    exit
    else
    vim $1
    exit
    fi

    fi
    【腳本50】格式化輸出
    輸入一串隨機(jī)數(shù)字,然后按千分位輸出。

    比如輸入數(shù)字串為“123456789”,輸出為123,456,789

    代碼參考:

    #!/bin/bash

    read -p “輸入一串?dāng)?shù)字:” num
    v=echo $num|sed 's/[0-9]//g'
    if [ -n "v"]thenecho"請輸入純數(shù)字."exitfilength=v" ] then echo "請輸入純數(shù)字." exit fi length=v"]thenecho"數(shù)."exitfilength={#num}
    len=0
    sum=’’
    for i in $(seq 1 length)dolen=length) do len=length)dolen=[$len+1]
    if [[ len==3]]thensum=′,′len == 3 ]] then sum=','len==3]]thensum=,{num:[0?[0-[0?i]:1}sumlen=0elsesum=sum len=0 else sum=sumlen=0elsesum={num:[0?[0-[0?i]:1}$sum
    fi
    done

    if [[ -n $(echo $sum | grep ‘^,’ ) ]]
    then
    echo ${sum:1}
    else
    echo $sum
    fi
    上面這個實現(xiàn)比較復(fù)雜,下面再來一個sed的:

    #!/bin/bash
    read -p “輸入一串?dāng)?shù)字:” num
    v=echo $num|sed 's/[0-9]//g'
    if [ -n “$v” ]
    then
    echo “請輸入純數(shù)字.”
    exit
    fi

    echo $num|sed -r ‘{:number;s/([0-9]+)([0-9]{3})/\1,\2/;t number}’
    【腳本51】
    1 編寫一個名為iffile程序,它執(zhí)行時判斷/bin目錄下date文件是否存在?

    參考代碼:

    #!/bin/bash
    if [ -f /bin/date ]
    then
    echo “/bin/date file exist.”
    else
    echo “/bin/date not exist.”
    fi
    2 編寫一個名為greet的問候程序,它執(zhí)行時能根據(jù)系統(tǒng)當(dāng)前的時間向用戶輸出問候信息。設(shè)從半夜到中午為早晨,中午到下午六點為下午,下午六點到半夜為晚上。

    參考代碼:

    #!/bin/bash
    h=date +%H
    if [ $h -ge 0 ] && [ $h -lt 12 ]
    then
    echo “Good morning.”
    elif [ $h -ge 12 ] && [ $h -lt 18 ]
    then
    echo “Good afternoon.”
    else
    echo “Good evening.”
    fi
    【腳本52】判斷用戶登錄
    1 編寫一個名為ifuser的程序,它執(zhí)行時帶用戶名作為命令行參數(shù),判斷該用戶是否已經(jīng)在系統(tǒng)中登錄,并給出相關(guān)信息。

    參考代碼:

    #!/bin/bash
    read -p "Please input the username: " user
    if who | grep -qw $user
    then
    echo $user is online.
    else
    echo $user not online.
    fi
    2 編寫一個名為menu的程序,實現(xiàn)簡單的彈出式菜單功能,用戶能根據(jù)顯示的菜單項從鍵盤選擇執(zhí)行對應(yīng)的命令。

    參考代碼:

    #!/bin/bash
    function message()
    {
    echo “0. w”
    echo “1. ls”
    echo “2.quit”
    read -p "Please input parameter: " Par
    }
    message
    while [ $Par -ne ‘2’ ] ; do
    case $Par in
    0)
    w
    ;;
    1)
    ls
    ;;
    2)
    exit
    ;;
    *)
    echo “Unkown command”
    ;;
    esac
    message
    done
    【腳本53】更改后綴名
    1 編寫一個名為chname的程序,將當(dāng)前目錄下所有的.txt文件更名為.doc文件。

    參考代碼:

    #!/bin/bash
    find . -type f -name “*.txt” > /tmp/txt.list
    for f in cat /tmp/txt.list
    do
    n=echo $f|sed -r 's/(.*)\.txt/\1/'
    echo “mv $f $n.doc”
    done
    2 編寫一個名為chuser的程序,執(zhí)行中每隔5分鐘檢查指定的用戶是否登錄系統(tǒng),用戶名從命令行輸入;如果指定的用戶已經(jīng)登錄,則顯示相關(guān)信息。

    參考代碼:

    #!/bin/bash
    read -p "Please input the username: " user
    while :
    do
    if who | grep -qw $user
    then
    echo $user login.
    else
    echo $user not login.
    fi
    sleep 300
    done
    【腳本54】判斷pid是否一致
    先普及一小段知識,我們用ps aux可以查看到進(jìn)程的PID,而每個PID都會在/proc內(nèi)產(chǎn)生。如果查看到的pid而proc內(nèi)是沒有的,則是進(jìn)程被人修改了,這就代表你的系統(tǒng)很有可能已經(jīng)被***過了。

    請大家用上面知識編寫一個shell,定期檢查下自己的系統(tǒng)是否被人***過。

    參考代碼:

    #!/bin/bash

    ps aux|awk '/[0-9]/ {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}?'|while read pi…pid"`
    if [ -z result];thenecho"result ]; then echo "result];thenecho"pid abnormal!"
    fi
    done
    【腳本55】一列變?nèi)?br /> 比如1.txt內(nèi)容:

    1
    2
    3
    4
    5
    6
    7
    處理后應(yīng)該是:

    1 2 3
    4 5 6
    7
    可使用sed命令完成:

    sed ‘N;N;s/\n/ /g’ 1.txt
    【腳本56】shell的getops
    寫一個getinterface.sh 腳本可以接受選項[i,I],完成下面任務(wù):

    使用一下形式:getinterface.sh [-i interface | -I ip]
    當(dāng)用戶使用-i選項時,顯示指定網(wǎng)卡的IP地址;當(dāng)用戶使用-I選項時,顯示其指定ip所屬的網(wǎng)卡。
    例:sh getinterface.sh -i eth0
    sh getinterface.sh -I 192.168.0.1
    當(dāng)用戶使用除[-i | -I]選項時,顯示[-i interface | -I ip]此信息。
    當(dāng)用戶指定信息不符合時,顯示錯誤。(比如指定的eth0沒有,而是eth1時)
    參考代碼:

    #!/bin/bash

    ip add |awk -F “:” ‘$1 ~ /1/ {print $2}’|sed ‘s/ //g’ > /tmp/eths.txt
    [ -f /tmp/eth_ip.log ] && rm -f /tmp/eth_ip.log
    for eth in cat /tmp/eths.txt
    do
    ip=ip add |grep -A2 ": $eth" |grep inet |awk '{print $2}' |cut -d '/' -f 1
    echo “eth:eth:eth:ip” >> /tmp/eth_ip.log
    done
    useage()
    {
    echo “Please useage: $0 -i 網(wǎng)卡名字 or $0 -I ip地址”
    }

    wrong_eth()
    {
    if ! awk -F ‘:’ ‘{print $1}’ /tmp/eth_ip.log | grep -qw “^111
    then
    echo “請指定正確的網(wǎng)卡名字”
    exit
    fi
    }

    wrong_ip()
    {
    if ! awk -F ‘:’ ‘{print $2}’ /tmp/eth_ip.log | grep -qw “^111
    then
    echo “請指定正確的ip地址”
    exit
    fi
    }

    if [ $# -ne 2 ]
    then
    useage
    exit
    fi

    case $1 in
    -i)
    wrong_eth $2
    grep -w $2 /tmp/eth_ip.log |awk -F ‘:’ ‘{print $2}’
    ;;

    -I) wrong_ip $2 grep -w $2 /tmp/eth_ip.log |awk -F ':' '{print $1}' ;;*) useage exit

    esac
    【腳本57】3位隨機(jī)數(shù)字
    寫一個腳本產(chǎn)生隨機(jī)3位的數(shù)字,并且可以根據(jù)用戶的輸入?yún)?shù)來判斷輸出幾組。 比如,腳本名字為 number3.sh。
    執(zhí)行方法:
    bash number3.sh
    直接產(chǎn)生一組3位數(shù)字。
    bash number3.sh 10
    插上10組3位數(shù)字。

    思路: 可以使用echo $RANDOM獲取一個隨機(jī)數(shù)字,然后再除以10,取余獲取0-9隨機(jī)數(shù)字,三次運(yùn)算獲得一組。

    參考代碼:

    #!/bin/bash

    get_a_num() {
    n=[[[RANDOM%10]
    echo $n
    }

    get_numbers() {
    for i in 1 2 3; do
    a[$i]=get_a_num
    done
    echo ${a[@]}
    }

    if [ -n “$1” ]; then
    m=echo $1|sed 's/[0-9]//g'
    if [ -n “$m” ]; then
    echo “Useage bash $0 n, n is a number, example: bash $0 5”
    exit
    else
    for i in seq 1 $1
    do
    get_numbers
    done
    fi
    else
    get_numbers

    fi
    【腳本58】檢查服務(wù)
    先判斷是否安裝http和mysql,沒有安裝進(jìn)行安裝,安裝了檢查是否啟動服務(wù),若沒有啟動則需要啟動服務(wù)。

    說明:操作系統(tǒng)為centos6,httpd和mysql全部為rpm包安裝。

    參考代碼:

    #!/bin/bash

    if_install()
    {
    n=rpm -qa|grep -cw "$1"
    if [ $n -eq 0 ]
    then
    echo “$1 not install.”
    yum install -y $1
    else
    echo “$1 installed.”
    fi
    }

    if_install httpd
    if_install mysql-server

    chk_ser()
    {
    p_n=ps -C "$1" --no-heading |wc -l
    if [ $p_n -eq 0 ]
    then
    echo “$1 not start.”
    /etc/init.d/$1 start
    else
    echo “$1 started.”
    fi
    }

    chk_httpd
    chk_mysqld
    【腳本59】判斷日期是否合法
    用shell腳本判斷輸入的日期是否合法。就是判斷日期是都是真實的日期,比如20170110就是合法日期,20171332就不合法

    參考代碼:

    #!/bin/bash

    #check date

    if [ $# -ne 1 ] || [ ${#1} -ne 8 ]
    then
    echo “Usage: bash $0 yyyymmdd”
    exit 1
    fi

    datem=1year=1 year=1year={datem:0:4}
    month=datem:4:2day={datem:4:2} day=datem:4:2day={datem:6:2}

    if echo $day|grep -q ‘^0’
    then
    day=echo $day |sed 's/^0//'
    fi

    if cal $month $year >/dev/null 2>/dev/null
    then
    daym=cal $month $year|egrep -v "$year|Su"|grep -w "$day"
    if [ “$daym” != “” ]
    then
    echo ok
    else
    echo “Error: Please input a wright date.”
    exit 1
    fi
    else
    echo “Error: Please input a wright date.”
    exit 1
    fi
    【腳本60】監(jiān)控網(wǎng)卡
    1.每10分鐘檢測一次指定網(wǎng)卡的流量
    2.如果流量為0,則重啟網(wǎng)卡

    參考代碼:

    #!/bin/bash

    LANG=en
    n1=sar -n DEV 1 60 |grep eth0 |grep -i average|awk '{print $5}'|sed 's/\.//g'
    n2=sar -n DEV 1 60 |grep eth0 |grep -i average|awk '{print $6}'|sed 's/\.//g'
    if [ $n1 == “000” ] && [ $n2 == “000” ]
    then
    ifdown eth0
    ifup eth0
    fi
    然后寫個cron,10分鐘執(zhí)行一次

    【腳本61】監(jiān)控web可用性
    寫一個shell腳本,通過curl -I 返回的狀態(tài)碼來判定所訪問的網(wǎng)站是否正常。比如,當(dāng)狀態(tài)碼為200時,才算正常。

    參考代碼:

    #/bin/bash

    url=“http://www.apelearn.com/index.php”
    sta=curl -I $url 2>/dev/null |head -1 |awk '{print $2}'

    if [ sta!="200"]thenpython/usr/local/sbin/mail.pyxxx@qq.com"sta != "200" ] then python /usr/local/sbin/mail.py xxx@qq.com "sta!="200"]thenpython/usr/local/sbin/mail.pyxxx@qq.com"url down." “$url down”
    fi
    【腳本62】文件打包
    需求:將用戶家目錄(考慮到執(zhí)行腳本的用戶可能是普通用戶也可能是root)下面小于5KB的文件打包成tar.gz的壓縮包,并以當(dāng)前日期為文件名前綴,例如今天打包的文件為2017-09-15.tar.gz。

    參考代碼:

    #!/bin/bash

    t=date +%F
    cd $HOME
    tar czf $t.tar.gz find . -type f -size -5k
    【腳本63】端口解封
    一個小伙伴提到一個問題,他不小心用iptables規(guī)則把sshd端口22給封掉了,結(jié)果不能遠(yuǎn)程登陸,要想解決這問題,還要去機(jī)房,登陸真機(jī)去刪除這規(guī)則。 問題來了,要寫個監(jiān)控腳本,監(jiān)控iptables規(guī)則是否封掉了22端口,如果封掉了,給打開。 寫好腳本,放到任務(wù)計劃里,每分鐘執(zhí)行一次。

    參考代碼:

    #!/bin/bash

    check sshd port drop

    /sbin/iptables -nvL --line-number|grep “dpt:22”|awk -F ’ ’ ‘{print $4}’ > /tmp/drop.txt
    i=cat /tmp/drop.txt|head -n 1|egrep -iE "DROP|REJECT"|wc -l
    if [ $i -gt 0 ]
    then
    /sbin/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
    fi
    【腳本64】統(tǒng)計分析日志
    已知nginx訪問的日志文件在/usr/local/nginx/logs/access.log內(nèi)

    請統(tǒng)計下早上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” “0.516”

    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” “0.065”
    實現(xiàn)這個需求使用如下命令即可:

    grep ‘15/Sep/2017:1[0-2]:[0-5][0-9]:’ /usr/local/nginx/logs/access.log|awk ‘{print $1}’|sort -n|uniq -c |sort -n|tail -n1
    【腳本65】打印數(shù)字
    寫一個shell腳本。提示你輸入一個暫停的數(shù)字,然后從1打印到該數(shù)字。然后詢問是否繼續(xù)。繼續(xù)的話在輸入個在數(shù)字 接著打印。不繼續(xù)退出。

    例:如果輸入的是5,打印1 2 3 4 5 然后繼續(xù) 輸入15 然后打印 6 7 …14 15 依此類推。

    參考代碼:

    #!/bin/bash

    read -p “請輸入您想要暫停的數(shù)字:” number_1

    for i in seq 1 $number_1;
    do
    echo $i
    done

    read -p “是否繼續(xù)輸入數(shù)字?” a
    if [ a=="yes"];thenread?p"請繼續(xù)輸入您想要暫停的數(shù)字:"number2number3=a == "yes" ];then read -p "請繼續(xù)輸入您想要暫停的數(shù)字:" number_2 number_3=a=="yes"];thenread?p"續(xù)數(shù)"number2?number3?=[$number_1+1]
    if [ $number_2 -gt $number_1 ];then
    for h in seq $number_3 $number_2;
    do
    echo $h
    done
    else
    echo “輸入數(shù)字錯誤,請輸入大于的數(shù)字!”
    fi
    else
    exit
    fi
    【腳本66】給文檔增加內(nèi)容
    在文本文檔1.txt第5行(假設(shè)文件行數(shù)大于5)后面增加如下內(nèi)容:

    This is a test file.

    Test insert line into this file.

    參考命令:

    sed -i “5a # This is a test file.\n# Test insert line into this file.” 1.txt
    【腳本67】備份etc下面文件
    設(shè)計一個shell程序,在每月第一天備份并壓縮/etc目錄的所有內(nèi)容,存放在/root/bak目錄里,且文件名為如下形式”yymmdd_etc.tar.gz”,yy為年,mm為月,dd為日。

    參考代碼:

    #!/bin/sh

    if [ ! -d /root/bak ]
    then
    mkdir /root/bak
    fi
    prefix=date +%y%m%d
    d=date +%d
    if [ d=="01"]thencd/etc/tarczf/root/bak/d == "01" ] then cd /etc/ tar czf /root/bak/d=="01"]thencd/etc/tarczf/root/bak/prefix_etc.tar.gz ./
    fi
    【腳本68】計算單詞重復(fù)次數(shù)
    將文件內(nèi)所有的單詞的重復(fù)次數(shù)計算出來,只需要列出重復(fù)次數(shù)最多的10個單詞。

    假設(shè)文檔名字叫做a.txt,使用如下命令即可:

    sed ‘s/[^a-zA-Z]/ /g’ a.txt|xargs -n1 |sort |uniq -c |sort -nr |head
    【腳本69】成員分組
    需求是,把所有的成員平均得分成若干個小組。這里,我會提供一個人員列表,比如成員有50人,需要分成7個小組,要求隨機(jī)性,每次和每次分組的結(jié)構(gòu)應(yīng)該不一致。

    假設(shè)成員列表文件為members.txt

    參考代碼:

    #!/bin/bash
    f=members.txt
    n=wc -l $f|awk '{print $1}'
    get_n()

    {
    l=echo $1|wc -c
    n1=RANDOMn2=RANDOM n2=RANDOMn2=[n1+n1+n1+l]
    g_id=[[[n1%7]
    if [ $g_id -eq 0 ]
    then
    g_id=7
    fi
    echo $g_id
    }

    for i in seq 1 7
    do
    [ -f n_KaTeX parse error: Expected 'EOF', got '&' at position 9: i.txt ] &?& rm -f n_i.txt
    done
    for i in seq 1 $n
    do
    name=sed -n "$i"p $f
    g=get_n $name
    echo KaTeX parse error: Expected group after '_' at position 10: name >> n_?g.txt
    done

    nu(){
    wc -l $1|awk ‘{print $1}’
    }

    max(){
    ma=0
    for i in seq 1 7
    do
    n=nu n_$i.txt
    if [ $n -gt ma]thenma=ma ] then ma=ma]thenma=n
    fi
    done
    echo $ma
    }

    min(){
    mi=50
    for i in seq 1 7
    do
    n=nu n_$i.txt
    if [ $n -lt mi]thenmi=mi ] then mi=mi]thenmi=n
    fi
    done
    echo $mi
    }

    ini_min=1
    while [ KaTeX parse error: Expected group after '_' at position 106: … n=`nu n_?i.txtif [ $n -eq $m1 ] then f1=n_$i.txt elif [ $n -eq $m2 ] then f2=n_$i.txt fi done name=tail -n1 $f1`
    echo $name >> f2sed?i"/f2 sed -i "/f2sed?i"/name/d" f1inimin=f1 ini_min=f1inim?in=[$ini_min+1]
    done

    for i in seq 1 7
    do
    echo "KaTeX parse error: Expected group after '_' at position 19: …成員有:" cat n_?i.txt
    echo
    done
    【腳本70】shell中的小數(shù)
    有一組式子如下:

    a=0.5
    b=3
    c=a*b
    求c的值,參考代碼:

    #!/bin/bash
    a=0.5
    b=3
    c=echo "scale=1;$a*$b"|bc
    echo $c
    【腳本71】a.txt有b.txt沒有
    有兩個文件a.txt和b.txt,需求是,把a(bǔ).txt中有的并且b.txt中沒有的行找出來,并寫入到c.txt,然后計算c.txt文件的行數(shù)。

    參考代碼:

    #!/bin/bash

    n=wc -l a.txt|awk '{print $1}'
    [ -f c.txt ] && rm -f c.txt
    for i in seq 1 $n
    do
    l=sed -n "$i"p a.txt
    if ! grep -q “^lll” b.txt
    then
    echo $l >>c.txt
    fi
    done
    wc -l c.txt

    或者用grep實現(xiàn)
    grep -vwf b.txt a.txt > c.txt; wc -l c.txt
    【腳本72】殺死進(jìn)程
    把當(dāng)前用戶下所有進(jìn)程名字中含有”java”的進(jìn)程關(guān)閉。

    參考答案:

    ps -u USER∣awk′USER |awk 'USERawkNF ~ /java/ {print $1}’|xargs kill
    【腳本73】備份數(shù)據(jù)表
    用shell實現(xiàn),以并發(fā)進(jìn)程的形式將mysql數(shù)據(jù)庫所有的表備份到當(dāng)前目錄,并把所有的表壓縮到一個壓縮包文件里。

    假設(shè)數(shù)據(jù)庫名字為mydb,用戶名為zero,密碼為passwd。

    提示: 在shell中加上&可以將命令丟到后臺,從而可以同時執(zhí)行多條命令達(dá)到并發(fā)的效果。

    參考代碼:

    #!/bin/bash
    pre=date +%F
    for d in mysql -uaming -ppasswd mydb -e "show tables"|grep -v 'Tables_in_'
    do
    mysqldump -uaming -ppasswd mydb $d > $d.sql &
    done
    tar czf $pre.tar.gz *.sql
    rm -f *.sql
    【腳本74】監(jiān)控節(jié)點
    一個網(wǎng)站,使用了cdn,全國各地有幾十個節(jié)點。需要你寫一個shell腳本來監(jiān)控各個節(jié)點是否正常。

    假如:

    監(jiān)控的url為www.xxx.com/index.php
    源站ip為88.88.88.88
    參考代碼:

    #!/bin/bash

    url=“www.xxx.com/index.php”
    s_ip=“88.88.88.88”
    curl -x $s_ip:80 $url > /tmp/source.html 2>/dev/null

    for ip in cat /tmp/ip.txt
    do
    curl -x $ip:80 url2>/dev/null>/tmp/url 2>/dev/null >/tmp/url2>/dev/null>/tmp/ip.html
    [ -f /tmp/KaTeX parse error: Expected 'EOF', got '&' at position 11: ip.diff ] &?& rm -f /tmp/ip.diff
    touch /tmp/ip.diffdiff/tmp/source.html/tmp/ip.diff diff /tmp/source.html /tmp/ip.diffdiff/tmp/source.html/tmp/ip.html > /tmp/ip.diff2>/dev/nulln=‘wc?l/tmp/ip.diff 2>/dev/null n=`wc -l /tmp/ip.diff2>/dev/nulln=wc?l/tmp/ip.diff|awk ‘{print $1}’`
    if [ $n -lt 0 ]
    then
    echo “node $ip sth wrong.”
    fi
    done
    【腳本75】破解字符串
    已知下面的字符串是通過RANDOM隨機(jī)數(shù)變量md5sum|cut-c 1-8截取后的結(jié)果,請破解這些字符串對應(yīng)的md5sum前的RANDOM對應(yīng)數(shù)字?

    21029299
    00205d1c
    a3da1677
    1f6d12dd
    890684ba
    解題思路:通過每次傳遞一個參數(shù)的方式,來實現(xiàn)依次破解,$RANDOM的范圍為0-32767。

    參考代碼:

    #!/bin/bash

    for n in {0…32767}
    do
    MD5=echo $n | md5sum | cut -c 1-8
    if [ “$MD5” == "1"];thenecho"1" ];then echo "1"];thenecho"n $1 "
    break
    fi
    done
    【腳本76】判斷cpu廠商
    寫一個腳本:

    判斷當(dāng)前主機(jī)的CPU生產(chǎn)商,其信息在/proc/cpuinfo文件中vendor id一行中。
    如果其生產(chǎn)商為AuthenticAMD,就顯示其為AMD公司;
    如果其生產(chǎn)商為GenuineIntel,就顯示其為Intel公司;
    否則,就說其為非主流公司。
    參考代碼:

    #!/bin/bash

    m=cat /proc/cpuinfo |grep vendor_id|awk -F":" '{print $2}'|tail -1
    if [ $m == “GenuineIntel” ]
    then
    echo “cpu is 英特爾”
    elif [ $m == “AuthenticAMD” ]
    then
    echo “cpu is AMD”
    else
    echo “cpu is 非主流”
    fi
    【腳本77】監(jiān)控cpu使用率
    用shell寫一個監(jiān)控服務(wù)器cpu使用率的監(jiān)控腳本。

    思路:用top -bn1 命令,取當(dāng)前空閑cpu百份比值(只取整數(shù)部分),然后用100去劍這個數(shù)值。

    參考代碼:

    #!/bin/bash

    while :
    do
    idle=top -bn1 |sed -n '3p' |awk '{print $5}'|cut -d . -f1
    use=[100?[100-[100?idle]
    if [ $use -gt 90 ]
    then
    echo “cpu use percent too high.”
    #發(fā)郵件省略
    fi
    sleep 10
    done
    【腳本78】獲取子進(jìn)程
    說明:本shell題目是一個網(wǎng)友在公眾號中提問的,正好利用這個每日習(xí)題的機(jī)會拿出來讓大家一起做一做。

    給出一個進(jìn)程PID,打印出該進(jìn)程下面的子進(jìn)程以及子進(jìn)程下面的所有子進(jìn)程。(只需要考慮子進(jìn)程的子進(jìn)程,再往深層次則不考慮)

    參考代碼:

    #!/bin/bash

    read -p "please input a pid number: " p
    ps -elf > /tmp/ps.log

    is_ppid(){
    awk ‘{print $5}’ /tmp/ps.log > /tmp/ps1.log
    if ! grep -qw “$1” /tmp/ps1.log
    then
    echo “PID $1 不是系統(tǒng)進(jìn)程號,或者它不是父進(jìn)程”
    return 1
    fi
    }

    is_ppid $p

    if [ $? -eq “1” ]
    then
    exit
    fi

    print_cpid(){
    p=1awk?vp1=1 awk -v p1=1awk?vp1=p ‘$5 == p1 {print $4}’ /tmp/ps.log |sort -n |uniq >/tmp/p1.log
    n=wc -l /tmp/p1.log|awk '{print $1}'
    if [ $n -ne 0 ]
    then
    echo “PID $p 子進(jìn)程 pid 如下:”
    cat /tmp/p1.log
    else
    echo “PID $p 沒有子進(jìn)程”
    fi
    }

    print_cpid $p

    for cp in cat /tmp/p1.log
    do
    print_cpid $cp
    done
    另外,一條命令查詢的方法是:

    pstree -p pid
    【腳本79】自動添加項目
    需求背景:
    服務(wù)器上,跑的lamp環(huán)境,上面有很多客戶的項目,每個項目就是一個網(wǎng)站。 由于客戶在不斷增加,每次增加一個客戶,就需要配置相應(yīng)的mysql、ftp以及httpd. 這種工作是重復(fù)性非常強(qiáng)的,所以用腳本實現(xiàn)非常合適。

    mysql增加的是對應(yīng)客戶項目的數(shù)據(jù)庫、用戶、密碼,ftp增加的是對應(yīng)項目的用戶、密碼(使用vsftpd,虛擬用戶模式),httpd就是要增加虛擬主機(jī)配置段。

    參考代碼:

    #!/bin/bash

    webdir=/home/wwwroot
    ftpudir=/etc/vsftpd/vuuser
    mysqlc="/usr/bin/mysql -uroot -xxxxxx"
    httpd_config_f="/usr/local/apache2/conf/extra/httpd-vhosts.conf"

    add_mysql_user()
    {
    mysql_p=mkpasswd -s 0 -l 12
    echo “$pro mysqlp">/tmp/mysql_p" >/tmp/mysqlp?">/tmp/pro.txt
    $mysqlc <<EOF
    grant all on p.?to"p.* to "p.?to"pro”@‘127.0.0.1’ identified by “$mysql_p”;
    EOF
    }

    add_ftp_user()

    {
    ftp_p=mkpasswd -s 0 -l 12
    echo “pro">>/root/login.txtecho"pro" >> /root/login.txt echo "pro">>/root/login.txtecho"ftp_p” >> /root/login.txt
    db_load -T -t hash -f /root/login.txt /etc/vsftpd/vsftpd_login.db
    cd $ftpudir
    cp aaa pro//這里的aaa是一個文件,是之前的一個項目,可以作為配置模板sed?i"s/aaa/pro //這里的aaa是一個文件,是之前的一個項目,可以作為配置模板 sed -i "s/aaa/pro//aaased?i"s/aaa/pro/" $pro //把里面的aaa改為新的項目名字
    /etc/init.d/vsftpd restart
    }

    config_httpd()

    {
    mkdir webdir/webdir/webdir/pro
    chown vsftpd:vsftpd webdir/webdir/webdir/pro
    echo -e "<VirtualHost *:80> \n DocumentRoot “/home/internet/www/$pro/” \n ServerName $dom \n #ServerAlias \n " >> $httpd_config_f
    /usr/local/apache2/bin/apachectl graceful
    }

    read -p "input the project name: " pro
    read -p "input the domain: " dom

    add_mysql_user
    add_ftp_user
    config_httpd
    【腳本80】計算器
    用shell寫一個簡易計算器,可以實現(xiàn)加、減、乘、除運(yùn)算,假如腳本名字為1.sh,執(zhí)行示例:./1.sh 1 + 2

    參考代碼:

    #!/bin/bash

    if [ $# -ne 3 ]
    then
    echo “參數(shù)個數(shù)不為3”
    echo “當(dāng)使用乘法時,需要加上脫義符號,例如 $0 1 * 2”
    exit 1;
    fi

    num1=echo $1|sed 's/[0-9.]//g' ;
    if [ -n “$num1” ]
    then
    echo “$1 不是數(shù)字” ;
    exit 1
    fi

    num3=echo $3|sed 's/[0-9.]//g' ;
    if [ -n “$num3” ]
    then
    echo “$3 不是數(shù)字” ;
    exit 1
    fi

    case $2 in
    +)
    echo “scale=2;$1+$3” | bc
    ;;

    -)
    echo “scale=2;$1-$3” | bc
    ;;

    *)
    echo “scale=2;$1*$3” | bc
    ;;

    /)
    echo “scale=2;$1/$3” | bc
    ;;

    *)
    echo “$2 不是運(yùn)算符”
    ;;
    esac
    【腳本81】判斷沒有文件
    判斷所給目錄內(nèi)哪些二級目錄下沒有text.txt文件。

    有text.txt文件的二級目錄,根據(jù)文件計算選項中單詞數(shù)最大的值(選項間以|分割,單詞間以空格分隔)。

    假如腳本名字為1.sh, 運(yùn)行腳本的格式為 ./1.sh 123 root,其中123為目錄名字,而root為要計算數(shù)量的單詞。

    說明: 這個shell腳本題目出的有點歧義。 原題給的描述不是很清楚,我另外又改了一下需求,依然不是很清晰。在這里我再做一個補(bǔ)充: 對于有test.txt的目錄,計算出該test.txt文件里面所給出單詞的次數(shù)。不用找最大。

    參考代碼:

    #!/bin/bash

    if [ $# -ne 2 ]
    then
    echo “useage $0 dir word”
    exit 1
    fi

    if [ -d $1 ]
    then
    cd $1
    else
    echo “$1目錄不存在”
    exit 1
    fi

    for f in ls $1
    do
    if [ -d $f ]
    then
    if [ -f $f/test.txt ]
    then
    n=grep -cw "$2" $f/test.txt
    echo “1/1/1/f/test.txt 里面有$n個$2”
    else
    echo “1/1/1/f 下面沒有test.txt”
    fi
    fi
    done
    【腳本82】打印正方形
    交互式腳本,根據(jù)提示,需要用戶輸入一個數(shù)字作為參數(shù),最終打印出一個正方形。

    在這里我提供一個linux下面的特殊字符■,可以直接打印出來。

    示例: 如果用戶輸入數(shù)字為5,則最終顯示的效果為:

    ■ ■ ■ ■ ■

    ■ ■ ■ ■ ■

    ■ ■ ■ ■ ■

    ■ ■ ■ ■ ■

    ■ ■ ■ ■ ■
    參考代碼:

    #!/bin/bash

    read -p “please input a number:” sum
    a=echo $sum |sed 's/[0-9]//g'
    if [ -n “$a” ]
    then
    echo “請輸入一個純數(shù)字?!?br /> exit 1
    fi

    for n in seq $sum
    do
    for m in seq $sum
    do
    if [ $m -lt $sum ]
    then
    echo -n "■ "
    else
    echo “■”
    fi
    done
    done
    【腳本83】問候用戶
    寫一個腳本,依次向/etc/passwd中的每個用戶問好,并且說出對方的ID是什么:

    Hello,root,your UID is 0.
    參考命令:

    awk -F ‘:’ ‘{print “Hello,”$1",your uid is "$3.}’ /etc/passwd
    【腳本84】按要求處理文本
    linux系統(tǒng) /home目錄下有一個文件test.xml,內(nèi)容如下:

    zzz aaa xxx yyy 請寫出shell腳本刪除文件中的注釋部分內(nèi)容,獲取文件中所有artifactItem的內(nèi)容,并用如下格式逐行輸出 artifactItem:groupId:artifactId

    分析:這個文件比較特殊,但是卻很有規(guī)律。注釋部分內(nèi)容其實就是<!– –>中間的內(nèi)容,所以我們想辦法把這些內(nèi)容刪除掉就ok了。而artifactItem的內(nèi)容,其實就是獲取中間的內(nèi)容。然后想辦法用提到的格式輸出即可。

    參考代碼:

    #!/bin/bash

    egrep -v ‘’ 1.txt |tee 2.txt //這行就是刪除掉注釋的行
    grep -n ‘a(chǎn)rtifactItem>’ 2.txt |awk ‘{print $1}’ |sed ‘s/?/’ > /tmp/line_number.txt
    n=wc -l /tmp/line_number.txt|awk '{print $1}'

    get_value(){
    sed -n "$1,$2"p 2.txt|awk -F ‘<’ ‘{print $2}’|awk -F ‘>’ ‘{print $1,$2}’ > /tmp/value.txt
    nu=wc -l /tmp/value.txt|awk '{print $1}'
    for i in seq 1 $nu
    do
    x=sed -n "$i"p /tmp/value.txt|awk '{print $1}'
    y=sed -n "$i"p /tmp/value.txt|awk '{print $2}'
    echo artifactItem:x:x:x:y
    done
    }

    n2=[[[n/2]

    for j in seq 1 $n2
    do
    m1=[[[j2-1]
    m2=[[[j2]
    nu1=sed -n "$m1"p /tmp/line_number.txt
    nu2=sed -n "$m2"p /tmp/line_number.txt
    nu3=[[[nu1+1]
    nu4=[[[nu2-1]
    get_value $nu3 $nu4
    done
    【腳本85】判斷函數(shù)
    請使用條件函數(shù)if撰寫一個shell函數(shù) 函數(shù)名為 f_judge,實現(xiàn)以下功能:

    當(dāng)/home/log 目錄存在時 將/home目錄下所有tmp開頭的文件或目錄移/home/log 目錄。
    當(dāng)/home/log目錄不存在時,創(chuàng)建該目錄,然后退出。
    參考代碼:

    #!/bin/bash

    f_judge (){
    if [ -d /home/log ]
    then
    mv /home/tmp* /home/log/
    else
    mkdir -p /home/log
    exit
    fi
    }
    【腳本86】批量殺進(jìn)程
    linux系統(tǒng)中,根目錄/root/下有一個文件ip-pwd.ini,內(nèi)容如下:

    10.111.11.1,root,xyxyxy

    10.111.11.1,root,xzxzxz

    10.111.11.1,root,123456

    10.111.11.1,root,xxxxxx

    ……
    文件中每一行的格式都為linux服務(wù)器的ip,root用戶名,root密碼,請用一個shell批量將這些服務(wù)器中的所有tomcat進(jìn)程kill掉。

    講解: 有了ip,用戶名和密碼,剩下的就是登錄機(jī)器,然后執(zhí)行命令了。批量登錄機(jī)器,并執(zhí)行命令,咱們課程當(dāng)中有講過一個expect腳本。所以本題就是需要這個東西來完成。

    首先編輯expect腳本 kill_tomcat.expect:

    #!/usr/bin/expect
    set passwd [lindex $argv 0]
    set host [lindex argv1]spawnsshroot@argv 1] spawn ssh root@argv1]spawnsshroot@host

    expect {
    “yes/no” { send “yes\r”; exp_continue}
    “password:” { send “$passwd\r” }
    }

    expect “]"
    send “killall java\r”
    expect "]”
    send “exit\r”
    編輯完后需要給這個文件執(zhí)行權(quán)限:

    chmod a+x kill_tomcat.expect
    然后編輯shell腳本:

    #!/bin/bash
    n=wc -l ip-pwd.ini
    for i in seq 1 $n
    do
    ip=sed -n "$n"p ip-pwd.ini |awk -F ',' '{print $1}'
    pw=sed -n "$n"p ip-pwd.ini |awk -F ',' '{print $3}'
    ./kill_tomcat.expect $pw $ip
    done
    【腳本87】處理日志
    寫一個腳本查找/data/log目錄下,最后創(chuàng)建時間是3天前,后綴是*.log的文件,打包后發(fā)送至192.168.1.2服務(wù)上的/data/log下,并刪除原始.log文件,僅保留打包后的文件

    參考代碼:

    #!/bin/bash

    find /data/log -name “*.log” -mtime +3 > /tmp/file.list
    cd /data/log
    tar czvf log.tar.gz cat /tmp/file.list|xargs
    rsync -a log.tar.gz 192.168.1.2:/data/log # 這一步需要提前做一個免密碼登錄
    for f in cat /tmp/file.list
    do
    rm -f $f
    done
    【腳本88】處理文本
    有如下文本,其中前5行內(nèi)容為

    1111111:13443253456
    2222222:13211222122
    1111111:13643543544
    3333333:12341243123
    2222222:12123123123
    用shell腳本處理后,按下面格式輸出:

    [1111111]
    13443253456
    13643543544
    [2222222]
    13211222122
    12123123123
    [3333333]
    12341243123
    參考代碼:

    #! /bin/bash

    sort -n filename |awk -F ‘:’ ‘{print $1}’|uniq >id.txt

    for id in cat id.txt; do
    echo “[id]"awk?vid2=id]" awk -v id2=id]"awk?vid2=id -F ‘:’ ‘$1==id2 {print $2}’ filename
    #另外的方式為: awk -F ‘:’ ‘1=="′1=="'1=="id’” {print $2}’ filename
    done
    【腳本89】清理日志
    要求:兩類機(jī)器一共300多臺,寫個腳本自動清理這兩類機(jī)器里面的日志文件。在堡壘機(jī)批量發(fā)布,也要批量發(fā)布到crontab里面。

    A類機(jī)器日志存放路徑很統(tǒng)一,B類機(jī)器日志存放路徑需要用匹配(因為這個目錄里除了日志外,還有其他文件,不能刪除。匹配的時候可用.log)

    A類:/opt/cloud/log/ 刪除7天前的
    B類: /opt/cloud/instances/ 刪除15天前的

    要求寫在一個腳本里面。不用考慮堡壘機(jī)上的操作,只需要寫出shell腳本。

    參考代碼:

    #!/bin/bash

    dir1=/opt/cloud/instances/
    dir2=/opt/cloud/log/

    if [ -d $dir1 ];then
    find $dir1 -type f -name “*.log” -mtime +15 |xargs rm -f
    elif [ -d $dir2 ];then
    find $dir2 -type f -mtime +7 |xargs rm -f
    fi
    【腳本90】
    貸款有兩種還款的方式:等額本金法和等額本息法

    簡單說明一下等額本息法與等額本金法的主要區(qū)別:

    等額本息法的特點是:每月的還款額相同,在月供中“本金與利息”的分配比例中,前半段時期所還的利息比例大、本金比例小,還款期限過半后逐步轉(zhuǎn)為本金比例大、利息比例小。所支出的總利息比等額本金法多,而且貸款期限越長,利息相差越大。

    等額本金法的特點是:每月的還款額不同,它是將貸款額按還款的總月數(shù)均分(等額本金),再加上上期剩余本金的月利息,形成一個月還款額,所以等額本金法第一個月的還款額最多 ,爾后逐月減少,越還越少。所支出的總利息比等額本息法少。

    兩種還款方式的比較不是我們今天的討論范圍,我們的任務(wù)就是做一個貸款計算器。

    其中:等額本息每月還款額的計算公式是:
    [貸款本金×月利率×(1+月利率)還款月數(shù)]÷[(1+月利率)還款月數(shù)-1]

    參考代碼:

    #!/bin/bash

    read -p “請輸入貸款總額(單位:萬元):” dkzewy
    read -p “請輸入貸款年利率(如年利率為6.5%,直接輸入6.5):” dknll
    read -p “請輸入貸款年限(單位:年):” dknx
    echo “貸款計算方式:”
    echo “1)等額本金計算法”
    echo “2)等額本息計算法”
    read -p “請選擇貸款方式(1|2)” dkfs
    dkze=echo "scale=2;$dkzewy*10000 " | bc -l
    dkll=echo "scale=6;$dknll/100 " | bc -l
    dkyll=echo "scale=6;$dkll/12 " | bc -l
    dkqc=[[[dknx*12]
    echo “期次 本月還款額 本月利息 未還款額”

    debjjsf()
    {
    yhbj=echo "scale=2;($dkze/$dkqc)/1 " | bc -l
    whbj=dkzefor((i=1;i<=dkze for((i=1;i<=dkzefor((i=1;i<=dkqc;i++))
    do
    bylx=echo "scale=2;($whbj*$dkyll)/1 " | bc -l
    bybx=echo "scale=2;($yhbj+$bylx)/1 " | bc -l
    yhke=echo "scale=2;($yhbj*$i)/1 " | bc -l
    whbj=echo "$dkze-$yhke " | bc -l
    if [ $i -eq dkqc]thenyhbj=‘echo"scale=2;(dkqc ] then yhbj=`echo "scale=2;(dkqc]thenyhbj=echo"scale=2;(yhbj+whbj)/1"∣bc?l‘whbj="0.00"bybx=‘echo"scale=2;(whbj)/1 " | bc -l` whbj="0.00" bybx=`echo "scale=2;(whbj)/1"bc?lwhbj="0.00"bybx=echo"scale=2;(yhbj+bylx)/1"∣bc?l‘fiecho"bylx)/1 " | bc -l` fi echo "bylx)/1"bc?lfiecho"i $bybx $bylx $whbj"
    done
    }

    debxjsf()
    {
    bybx=echo "scale=2;(($dkze*$dkyll*((1+$dkyll)^$dkqc))/(((1+$dkyll)^$dkqc)-1))/1 " | bc -l
    whbj=dkzefor((i=1;i<=dkze for((i=1;i<=dkzefor((i=1;i<=dkqc;i++))
    do
    bylx=echo "scale=2;($whbj*$dkyll)/1 " | bc -l
    yhbj=echo "scale=2;($bybx-$bylx)/1 " | bc -l
    whbj=echo "scale=2;($whbj-$yhbj)/1 " | bc -l
    if [ $i -eq dkqc]thenbybx=‘echo"scale=2;(dkqc ] then bybx=`echo "scale=2;(dkqc]thenbybx=echo"scale=2;(yhbj+whbj)/1"∣bc?l‘whbj="0.00"fiecho"whbj)/1 " | bc -l` whbj="0.00" fi echo "whbj)/1"bc?lwhbj="0.00"fiecho"i $bybx $bylx $whbj"
    done
    }

    case $dkfs in
    1) debjjsf
    ;;
    2) debxjsf
    ;;
    *) exit 1
    ;;
    esac
    【腳本91】監(jiān)控磁盤io
    阿里云的機(jī)器,今天收到客服來的電話,說服務(wù)器的磁盤io很重。于是登錄到服務(wù)器查看,并沒有發(fā)現(xiàn)問題,所以懷疑是間歇性地。

    正要考慮寫個腳本的時候,幸運(yùn)的抓到了一個線索,造成磁盤io很高的幕后黑手是mysql。此時去show processlist,但未發(fā)現(xiàn)隊列。原來只是一瞬間。

    只好繼續(xù)來寫腳本,思路是,每5s檢測一次磁盤io,當(dāng)發(fā)現(xiàn)問題去查詢mysql的processlist。

    提示:你可以用iostat -x 1 5 來判定磁盤的io,主要看%util

    參考代碼:

    #!/bin/bash

    while :
    do
    n=iostat -x 1 5 |tail -n3|head -n1 |awk '{print $NF}'|cut -d. -f1
    if [ $n -gt 70 ]
    then
    echo "date util% is $n%" >>/tmp/mysql_processlist.log
    mysql -uroot -pxxxxxx -e “show full processlist” >> /tmp/mysql_processlist.log
    fi
    sleep 5
    done
    【腳本92】截取tomcat日志
    寫一個截取tomcat catalina.out日志的腳本。

    tomcat實例t1-t4:

    [root@server ~]# tree -L 1 /opt/TOM/
    /opt/TOM/
    ├── crontabs
    ├── t1
    ├── t2
    ├── t3
    └── t4

    5 directories, 0 files
    catalina.out日志路徑:

    [root@server ~]# find /opt/TOM/ -name catalina.out
    /opt/TOM/t1/logs/catalina.out
    /opt/TOM/t3/logs/catalina.out
    /opt/TOM/t4/logs/catalina.out
    /opt/TOM/t2/logs/catalina.out
    要求:

    這個腳本可以取tomcat實例t1-t4的日志
    這個腳本可以自定義取日志的起始點,比如取今天早上10點之后到現(xiàn)在的數(shù)據(jù)
    這個腳本可以自定義取日志的起始點和終點,比如取今天早上9點到晚上8點的數(shù)據(jù)
    catalina.out 日志片段:

    Mar 29, 2016 1:52:24 PM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler [“http-bio-8080”]
    Mar 29, 2016 1:52:24 PM org.apache.coyote.AbstractProtocol start
    INFO: Starting ProtocolHandler [“ajp-bio-8009”]
    Mar 29, 2016 1:52:24 PM org.apache.catalina.startup.Catalina start
    INFO: Server startup in 2102 ms
    參考代碼:

    #!/bin/bash

    export LANG=en_US.UTF-8
    export PATH=$PATH
    IPADD=/sbin/ifconfig | grep "inet addr" | head -1 | awk '{print $2}'| awk -F '.' '{print $NF}'
    LOGFILE="/opt/TOM/$1/logs/catalina.out"
    YEAR=date +%Y
    DATE=date +%m%d_%H%M
    TOMCAT=1BEGINTIME=1 BEGIN_TIME=1BEGINT?IME=YEAR2ENDTIME=2 END_TIME=2ENDT?IME=YEAR$3

    ##judge is a.m.or p.m.
    TIME_HOUR1=echo ${BEGIN_TIME:9:2}

    cut_log() {
    N_DATE1=echo $1 | sed 's/_/ /g'
    D_DATE1=echo $2 | sed 's/_/ /g'
    E_DATE1=echo $3 | sed 's/_/ /g'
    [ $4 ] && N_DATE2=echo $4 | sed 's/_/ /g'
    [ $5 ] && D_DATE2=echo $5 | sed 's/_/ /g'
    [ $6 ] && E_DATE2=echo $6 | sed 's/_/ /g'
    BEGIN=grep -nE "${N_DATE1}|${D_DATE1}|${E_DATE1}" ${LOGFILE} | head -1 | cut -d : -f1
    [ “KaTeX parse error: Expected 'EOF', got '&' at position 12: N_DATE2" ] &?& END=`grep -nE…{N_DATE2}|DDATE2∣{D_DATE2}|DD?ATE2{E_DATE2}” ${LOGFILE} | tail -1 | cut -d : -f1`

    [ ! -z "${TIME_HOUR1}" ] && if [ ${TIME_HOUR1} -gt 12 ] ; thenBEGIN1=`grep -nE "${N_DATE1}|${D_DATE1}|${E_DATE1}" ${LOGFILE} |grep " PM " |grep "${E_DATE1}" | head -1 | cut -d : -f1`if [ ! -z "${BEGIN1}" ] ; then[ "${BEGIN1}" -gt "${BEGIN}" ] ; BEGIN=${BEGIN1}fifiif [ "$BEGIN" ] && [ -z "$END" ] ; thenif [ "$N_DATE2" ]; thenecho "${END_TIME}時間點沒有訪問日志,請重新設(shè)置時間點."elsesed -n "${BEGIN},[ DISCUZ_CODE_0 ]quot;p ${LOGFILE} > /home/gcweb/${IPADD}_${TOMCAT}_${DATE}.logfielif [ "$END" ];then[ "$BEGIN" ] || BEGIN=1sed -n "${BEGIN},${END}"p ${LOGFILE} > /home/gcweb/${IPADD}_${TOMCAT}_${DATE}.logelse[ "$END_TIME" != "$YEAR" ] && echo "該時段 ${BEGIN_TIME}~${END_TIME} 沒有日志."[ "$END_TIME" = "$YEAR" ] && echo "該時段 ${BEGIN_TIME}~now 沒有日志."fiif [ -s /home/gcweb/${IPADD}_${TOMCAT}_${DATE}.log ]; thencd /home/gcweb && tar -zcf ${IPADD}_${TOMCAT}_${DATE}.tar.gz ${IPADD}_${TOMCAT}_${DATE}.logrm -f /home/gcweb/${IPADD}_${TOMCAT}_${DATE}.logsz /home/gcweb/${IPADD}_${TOMCAT}_${DATE}.tar.gzecho "Success to get logs."rm -f /home/gcweb/${IPADD}_${TOMCAT}_${DATE}.tar.gzfi

    }

    get_time() {
    case “$1” in
    4)

    N_DATE=`date -d "$2" +"%Y-%m-%d" 2>/dev/null`D_DATE=`date -d "$2" +"%Y/%m/%d" 2>/dev/null`E_DATE=`date -d "$2" +"%h %e,_%Y" 2>/dev/null|sed 's/ /_/g'`echo $N_DATE $D_DATE $E_DATE;; 7) TIME=`echo $2 | awk -F'_' '{print $1,$2}'`N_DATE=`date -d "$TIME" +"%Y-%m-%d_%H" 2>/dev/null`D_DATE=`date -d "$TIME" +"%Y/%m/%d_%H" 2>/dev/null`E_DATE=`date -d "$TIME" +"%h %e,_%Y %l" 2>/dev/null|sed 's/ /_/g'`echo "$N_DATE" "$D_DATE" "$E_DATE";;9) TIME=`echo $2 | awk -F'_' '{print $1,$2}'`N_DATE=`date -d "$TIME" +"%Y-%m-%d_%H:%M" 2>/dev/null`D_DATE=`date -d "$TIME" +"%Y/%m/%d_%H:%M" 2>/dev/null`E_DATE=`date -d "$TIME" +"%h %e,_%Y %l:%M" 2>/dev/null|sed 's/ /_/g'`echo "$N_DATE" "$D_DATE" "$E_DATE";;*) echo 1;;esac

    }

    check_arguments () {

    if [ "$1" == 1 ] || [ -z "$1" ] ;thenecho "你輸入時間參數(shù)的格式無法識別, usage: 0108、0108_10、0108_1020"exit 3fi

    }

    check_tomcat () {

    if [ ! -s "${LOGFILE}" ] ;thenecho "tomcat_name: ${TOMCAT} is not exist"echo "you can choose:"/bin/ls /home/gcweb/usr/local/fiif [ $1 -lt 2 ] || [ ! -s "${LOGFILE}" ];thenecho "usage: $0 tomcat_name {begin_time|begin_time end_time}"exit 2fi

    }

    case “$#” in

    0)echo "usage: $0 tomcat_name {begin_time|begin_time end_time}"exit 1;;1)check_tomcat $#;;2)check_tomcat $#len=`echo $2 | awk '{print length($0)}'`A_DATE=$(get_time $len $BEGIN_TIME)eval $( echo $A_DATE |awk '{print "N_DATE="$1,"D_DATE="$2,"E_DATE="$3}')check_arguments "${N_DATE}"cut_log "${N_DATE}" "${D_DATE}" "${E_DATE}";;3)check_tomcat $#len1=`echo $2 | awk '{print length($0)}'`len2=`echo $3 | awk '{print length($0)}'`A_DATE=$(get_time ${len1} $BEGIN_TIME)eval $( echo $A_DATE |awk '{print "N_DATE1="$1,"D_DATE1="$2,"E_DATE1="$3}')check_arguments "${N_DATE1}"A_DATE=$(get_time ${len2} $END_TIME)eval $( echo $A_DATE |awk '{print "N_DATE="$1,"D_DATE="$2,"E_DATE="$3}')check_arguments "${N_DATE}"cut_log ${N_DATE1} ${D_DATE1} ${E_DATE1} "${N_DATE}" "${D_DATE}" "${E_DATE}";;*)echo "usage: $0 tomcat_name {begin_time|begin_time end_time};你使用的參數(shù)太多哦.";;

    esac
    【腳本93】數(shù)組
    寫一個腳本讓用戶輸入多個城市的名字(可以是中文),要求不少于5個,然后把這些城市存到一個數(shù)組里,最后用for循環(huán)把它們打印出來。

    參考代碼:

    #!/bin/bash

    read -p “請輸入至少5個城市的名字,用空格分隔:” city
    n=echo $city|awk '{print NF}'

    if [ $n -lt 5 ]
    then
    echo “輸入的城市個數(shù)至少為5”
    exit
    fi

    name=($city)

    for i in ${name[@]}
    do
    echo $i
    done
    【腳本94】批量同步代碼
    需求背景是:

    一個業(yè)務(wù),有3臺服務(wù)器(A,B,C)做負(fù)載均衡,由于規(guī)模太小目前并未使用專業(yè)的自動化運(yùn)維工具。有新的需求時,開發(fā)同事改完代碼會把變更上傳到其中一臺服務(wù)器A上。但是其他2臺服務(wù)器也需要做相同變更。

    寫一個shell腳本,把A服務(wù)器上的變更代碼同步到B和C上。

    其中,你需要考慮到不需要同步的目錄(假如有tmp、upload、logs、caches)

    參考代碼:

    #!/bin/bash

    echo “該腳本將會把A機(jī)器上的/data/wwwroot/www.aaa.com目錄同步到B,C機(jī)器上”;
    read -p "是否要繼續(xù)?(y|n) "

    rs() {
    rsync -azP
    –exclude logs
    –exclude upload
    –exclude caches
    –exclude tmp
    www.aaa.com/ $1:/data/wwwroot/www.aaa.com/

    }

    if [ $REPLY == ‘y’ -o $REPLY == ‘Y’ ]
    then
    echo “即將同步……”
    sleep 2
    cd /data/wwwroot/
    rs B機(jī)器ip
    rs C機(jī)器ip
    echo “同步完成。”
    elif [ $REPLY == ‘n’ -o $REPLY == ‘N’ ]
    then
    exit 1
    else
    echo “請輸入字母y或者n”
    fi
    【腳本95】統(tǒng)計并發(fā)量
    需求背景:

    需要統(tǒng)計網(wǎng)站的并發(fā)量,并繪圖。
    思路:

    借助zabbix成圖
    通過統(tǒng)計訪問日志每秒的日志條數(shù)來判定并發(fā)量
    zabbix獲取數(shù)據(jù)間隔30s
    說明: 只需要寫出shell腳本即可,不用關(guān)心zabbix配置。

    假設(shè)日志路徑為:

    /data/logs/www.aaa.com_access.log
    日志格式如下:

    112.107.15.12 - [07/Nov/2017:09:59:01 +0800] www.aaa.com “/api/live.php” 200"-" “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)”
    參考代碼:

    #!/bin/bash
    log=/data/logs/www.aaa.com_access.log
    t=date -d "-1 second" +%Y:%H:%M:%S
    #可以大概分析一下每分鐘日志的量級,比如說不超過3000
    n=tail -3000 log∣grep?c"log |grep -c "loggrep?c"t"
    echo $n
    【腳本96】關(guān)閉服務(wù)
    在centos6系統(tǒng)里,我們可以使用ntsysv關(guān)閉不需要開機(jī)啟動的服務(wù),當(dāng)然也可以使用chkconfig工具來實現(xiàn)。

    寫一個shell腳本,用chkconfig工具把不常用的服務(wù)關(guān)閉。腳本需要寫成交互式的,需要我們給它提供關(guān)閉的服務(wù)名字。

    參考代碼:

    #!/bin/bash

    LANG=en
    c=“1”

    while [ ! $c == “q” ]
    do
    echo -e “\033[35mPlease chose a service to close from this list: \033[0m”
    chkconfig --list |awk ‘/3:on/ {print $1}’
    read -p "Which service to close: " s
    chkconfig $s off
    service $s stop
    read -p "If you want’s to quit this program, tab “q”, or tab “Ctrl c”: " c
    done
    【腳本97】重啟tomcat服務(wù)
    在生產(chǎn)環(huán)境中,經(jīng)常遇到tomcat無法徹底關(guān)閉,也就是說用tomcat自帶shutdown.sh腳本無法將java進(jìn)程完全關(guān)掉。所以,需要借助shell腳本,將進(jìn)程殺死,然后再啟動。

    寫一個shell腳本,實現(xiàn)上述功能。徹底殺死一個進(jìn)程的命令是 kill -9 pid.

    參考代碼:

    #!/bin/bash

    ###功能: 重啟 tomcat 進(jìn)程
    ###要求:對于tomcat中的某些應(yīng)用,使用shutdown.sh是無法完全停掉所有服務(wù)的 實際操作中都需要kill掉tomcat再重啟

    root can not run this script.

    if [ $USER = root ]
    then
    echo “root cann’t run this script!please run with other user!”
    exit 1
    fi

    check the Parameter

    if [[ $# -ne 1 ]]
    then
    echo “Usage:$0 tomcatname”
    exit 1
    fi

    only one process can run one time

    TMP_FILE_U=/tmp/.tmp.ps.keyword.$USER.956327.txt
    #echo $TMP_FILE_U
    KEYWORD1="$0"
    KEYWORD2="$1"

    使用賦值會多fork出一個進(jìn)程,所以要先重定向到一個文本,再統(tǒng)計.

    ps ux |grep “KaTeX parse error: Undefined control sequence: \< at position 17: …EYWORD1"|grep "\?<?KEYWORD2>”|grep -v “grep” > $TMP_FILE_U
    Pro_count=cat $TMP_FILE_U |wc -l
    if [ $Pro_count -gt 1 ]
    then
    echo “An other process already running ,exit now!”
    exit 1
    fi

    ###################################################

    begin of the script

    ###################################################

    set the Parameter

    TOM=echo $1|sed 's#/##g'
    TOMCAT_DIRECTORY=~/usr/local/TOMSTARTUPSCRIPT=TOM STARTUP_SCRIPT=TOMSTARTUPS?CRIPT=TOMCAT_DIRECTORY/bin/startup.sh
    TOMCAT_LOG=TOMCATDIRECTORY/logs/catalina.outCONFFILE=TOMCAT_DIRECTORY/logs/catalina.out CONF_FILE=TOMCATD?IRECTORY/logs/catalina.outCONFF?ILE=TOMCAT_DIRECTORY/conf/server.xml
    TEMPFILE=/tmp/.tmpfile.x.89342.c4r3.tmp

    check if the tomcat directory exist

    if [ ! -d “KaTeX parse error: Can't use function '\"' in math mode at position 51: …h(huán)o "the tomcat \?"?TOM” not exist.check again!"
    exit 1
    fi

    log roteta and delete log one week ago

    rotate_log(){
    TIME_FORMART=(date+LOGDIR=(date +%Y%m%d%H%M%S) LOG_DIR=(date+LOGD?IR=(dirname $TOMCAT_LOG)
    mv $TOMCAT_LOG KaTeX parse error: Expected group after '_' at position 13: {TOMCAT_LOG}_?{TIME_FORMART}
    find $LOG_DIR -type f -ctime +7 -exec rm -rf {} ;
    }

    function start the tomcat

    start_tomcat()
    {
    #echo start-tomcat-func
    if [ -x “$STARTUP_SCRIPT” ]
    then

    rotate_log$STARTUP_SCRIPTsleep 1tail -f $TOMCAT_LOG

    else
    if [ -e $STARTUP_SCRIPT ]
    then
    chmod +x $STARTUP_SCRIPT

    echo “permition added!”

    if [ -x "$STARTUP_SCRIPT" ]thenrotate_log$STARTUP_SCRIPTsleep 1tail -f $TOMCAT_LOGelseecho "The script not have excute permision,Couldn't add permision to Script!"exit 1fielseecho "error,the script \"startup.sh\" not exist!"exit 1fi

    fi
    }

    function stop the tomcat

    stop_tomcat()
    {
    rm -rf TEMPFILEpsux∣grep/TEMPFILE ps ux |grep /TEMPFILEpsuxgrep/TOM/ |grep -v “grep /$TOM/”|grep java > $TEMPFILE
    Pro_Count=cat $TEMPFILE|wc -l
    PIDS=cat $TEMPFILE|awk '{print $2}'
    rm -rf $TEMPFILE
    #echo $Pro_Count

    if [ $Pro_Count -eq 0 ]
    then
    echo “The tomcat not running now!”
    else
    if [ $Pro_Count -ne 1 ]
    then
    echo “The have $Pro_Count process running,killed!”
    kill -9 echo $PIDS
    WC=ps aux | grep "/$TOM/" | grep -v "grep /$TOM/" | grep java |wc -l
    [ $WC -ne 0 ] && (echo “kill process failed!”;exit 1)
    else
    echo “Process killed!”
    kill -9 echo $PIDS
    WC=ps aux | grep "/$TOM/" | grep -v "grep /$TOM/" | grep java |wc -l
    [ $WC -ne 0 ] && (echo “kill process failed!”;exit 1)
    fi
    fi
    }

    ###########################

    The main script

    ###########################

    echo -e "are you sure restart TOM?(yorn)"readANSif["TOM?(y or n)" read ANS if [ "TOM?(yorn)"readANSif["ANS"a != ya ]
    then
    echo -e “bye! \n”
    exit 1
    fi

    stop_tomcat
    echo “start tomcat …”
    sleep 2
    start_tomcat

    end

    【腳本98】取消后綴
    至少用兩種方法,批量把當(dāng)前目錄下面所有文件名后綴為.bak的后綴去掉,比如1.txt.bak去掉后為1.txt

    假設(shè)取消的后綴為.bak

    方法一:

    #!/bin/bash

    for i in ls *.bak
    do
    mv $i echo $i|sed 's/\.bak//g'
    done
    方法二:

    #!/bin/bash

    for i in ls *.bak
    do
    newname=echo $i|awk -F '.bak' '{print $1}'
    mv $i $newname
    done
    【腳本99】域名到期提醒
    寫一個shell腳本,查詢指定域名的過期時間,并在到期前一周,每天發(fā)一封提醒郵件。

    思路: 大家可以在linux下使用命令“whois 域名”,如”whois xxx.com”,來獲取該域名的一些信息。

    提示: whois命令,需要安裝jwhois包

    參考代碼:

    #!/bin/bash

    t1=date +%s
    is_install_whois()
    {
    which whois >/dev/null 2>/dev/null
    if [ $? -ne 0 ]
    then
    yum install -y jwhois
    fi
    }

    notify()
    {
    e_d=whois $1|grep 'Expiry Date'|awk '{print $4}'|cut -d 'T' -f 1
    e_t=date -d "$e_d" +%s
    n=echo "86400*7"|bc
    e_t1=[[[e_t-$n]
    if [ $t1 -ge $e_t1 ] && [ $t1 -lt $e_t ]
    then
    /usr/local/sbin/mail.py aming_test@163.com “Domain $1 will be expire.” “Domain $1 expire date is $e_d.”
    fi
    }

    is_install_whois
    notify xxx.com
    【腳本100】自動增加公鑰
    寫一個shell腳本,當(dāng)我們執(zhí)行時,提示要輸入對方的ip和root密碼,然后可以自動把本機(jī)的公鑰增加到對方機(jī)器上,從而實現(xiàn)密鑰認(rèn)證。

    參考代碼:

    #!/bin/bash

    read -p "Input IP: " ip
    ping $ip -w 2 -c 2 >> /dev/null

    查看ip是否可用

    while [ $? -ne 0 ]
    do
    read -p "your ip may not useable, Please Input your IP: " ip
    ping $ip -w 2 -c 2 >> /dev/null
    done
    read -p "Input root’s password of this host: " password

    檢查命令子函數(shù)

    check_ok() {
    if [ $? != 0 ]
    then
    echo “Error!.”
    exit 1
    fi
    }

    yum需要用到的包

    myyum() {
    if ! rpm -qa |grep -q “$1”
    then
    yum install -y $1
    check_ok
    else
    echo $1 already installed
    fi
    }

    for p in openssh-clients openssh expect
    do
    myyum $p
    done

    在主機(jī)A上創(chuàng)建密鑰對

    if [ ! -f ~/.ssh/id_rsa ] || [ ! -f ~/.ssh/id_rsa.pub ]
    then
    if [ -d ~/.ssh ]
    then
    mv ~/.ssh/ ~/.ssh_old
    fi
    echo -e “\n” | ssh-keygen -t rsa -P ‘’
    check_ok
    fi

    傳私鑰給主機(jī)B

    if [ ! -d /usr/local/sbin/rsync_keys ]
    then
    mkdir /usr/local/sbin/rsync_keys
    fi
    cd /usr/local/sbin/rsync_keys
    if [ -f rsync.expect ]
    then
    d=date +%F-%T
    mv rsync.expect $d.expect
    fi

    #創(chuàng)建遠(yuǎn)程同步的expect文件

    cat > rsync.expect <<EOF
    #!/usr/bin/expect
    set host [lindex $argv 0]
    #主機(jī)B的密碼
    set passwd [lindex $argv 1]
    spawn rsync -av /root/.ssh/id_rsa.pub root@$host:/tmp/tmp.txt
    expect {
    “yes/no” { send “yes\r”; exp_continue}
    “password:” { send “$passwd\r” }
    }
    expect eof
    spawn ssh root@$host
    expect {
    “password:” { send “$passwd\r” }
    }
    expect “]"
    send “[ -f /root/.ssh/authorized_keys ] && cat /tmp/tmp.txt >>/root/.ssh/authorized_keys \r”
    expect "]”
    send “[ -f /root/.ssh/authorized_keys ] || mkdir -p /root/.ssh/ \r”
    send “[ -f /root/.ssh/authorized_keys ] || mv /tmp/tmp.txt /root/.ssh/authorized_keys\r”
    expect “]"
    send “chmod 700 /root/.ssh; chmod 600 /root/.ssh/authorized_keys\r”
    expect "]”
    send “exit\r”
    EOF

    check_ok
    /usr/bin/expect /usr/local/sbin/rsync_keys/rsync.expect $ip $password
    echo “OK,this script is successful. ssh $ip to test it”
    【腳本101】自動封/解封ip
    需求背景:

    discuz論壇,每天有很多注冊機(jī)注冊的用戶,然后發(fā)垃圾廣告帖子。雖然使用了一些插件但沒有效果。分析訪問日志,發(fā)現(xiàn)有幾個ip訪問量特別大,所以想到可以寫個shell腳本,通過分析訪問日志,把訪問量大的ip直接封掉。

    但是這個腳本很有可能誤傷,所以還需要考慮到自動解封這些ip。

    思路:

    可以每分鐘分析1次訪問日志,設(shè)定一個閾值,把訪問量大的ip用iptables封掉80端口
    每20分鐘檢測一次已經(jīng)被封ip的請求數(shù)據(jù)包數(shù)量,設(shè)定閾值,把沒有請求的或者請求量很小的解封
    參考代碼:

    #! /bin/bash

    To block the ip of bad requesting.

    Writen by aming 2017-11-18.

    log="/data/logs/www.xxx.com.log"
    tmpdir="/tmp/badip"
    #白名單ip,不應(yīng)該被封
    goodip=“27.133.28.101”

    [ -d $tmpdir ] || mkdir -p $tmpdir

    t=date -d "-1 min" +%Y:%H:%M

    #截取一分鐘以前的日志
    grep “$t:” $log > $tmpdir/last_min.log

    #把一分鐘內(nèi)日志條數(shù)大于120的標(biāo)記為不正常的請求
    awk ‘{print $1}’ $tmpdir/last_min.log |sort -n |uniq -c |sort -n |tail |awk '$1>120 {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}?'|grep -v "good_ip"> $tmpdir/bad.ip

    d3=date +%M

    #每隔20分鐘解封一次ip
    if [ $d3 -eq “20” ] || [ $d3 -eq “40” ] || [ $d3 -eq “00” ]
    then
    /sbin/iptables -nvL INPUT|grep ‘DROP’ |awk '$1<10 {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 8}?'>tmpdir/good.ip
    if [ -s $tmpdir/good.ip ]
    then
    for ip in cat $tmpdir/good.ip
    do
    /sbin/iptables -D INPUT -p tcp --dport 80 -s ip?jDROPd4=‘date+echo"ip -j DROP d4=`date +%Y%m%d-%H:%M` echo "ip?jDROPd4=date+echo"d4 ipunblock">>ip unblock" >>ipunblock">>tmpdir/unblock.ip
    done
    fi

    #解封后,再把iptables的計數(shù)器清零/sbin/iptables -Z INPUT

    fi

    if [ -s $tmpdir/bad.ip ]
    then
    for ip in cat $tmpdir/bad.ip
    do
    /sbin/iptables -A INPUT -p tcp --dport 80 -s ip?jDROPd4=‘date+echo"ip -j DROP d4=`date +%Y%m%d-%H:%M` echo "ip?jDROPd4=date+echo"d4 ipblock">>ip block" >>ipblock">>tmpdir/block.ip
    done
    fi
    【腳本102】單機(jī)部署SpringBoot項目
    有一臺測試服務(wù)器,經(jīng)常需要部署SpringBoot項目,手動部署太麻煩,于是寫了個部署腳本

    腳本代碼:

    #!/bin/bash

    git倉庫路徑

    GIT_REPOSITORY_HOME=/app/developer/git-repository

    jar包發(fā)布路徑

    PROD_HOME=/prod/java-back

    應(yīng)用列表

    APPS=(app1 app2 app3)

    if [ ! -n “$1” ]
    then
    echo -e “請輸入要發(fā)布的項目!”
    exit
    fi

    cd dir

    for((i=0;i<${#APPS[@]};i++))
    do
    echo $1 ${APPS[i]}
    if [ $1 = ${APPS[i]} ]
    then
    echo -e =Enter $1===
    cd ${GIT_REPOSITORY_HOME}/$1
    break
    fi
    done

    if [ pwd != ${GIT_REPOSITORY_HOME}/$1 ]
    then
    echo -e “輸入的項目名沒有找到!”
    exit
    fi

    echo “git切換分之到master=====”
    git checkout master

    echo “git fetch====”
    git fetch

    echo “git pull====”
    git pull

    echo “=選擇線上環(huán)境編譯并跳過單元測試==========”
    mvn clean package -Dmaven.test.skip=true -Pprod

    jar_path=${GIT_REPOSITORY_HOME}/$1/target/-0.0.1-SNAPSHOT.jar
    echo ${jar_path}
    if [ -f ${jar_path} ]
    then
    # backup dest
    echo -e “=jar backup===”
    mv ${PROD_HOME}/$1/-0.0.1-SNAPSHOT.jar ${PROD_HOME}/$1/$1-0.0.1-SNAPSHOT.jar.back

    # copy echo "======拷貝編譯出來的jar包拷貝到$PROD_HOME=======" if [ -d ${PROD_HOME}/$1 ] then/bin/cp ${GIT_REPOSITORY_HOME}/$1/target/*-0.0.1-SNAPSHOT.jar ${PROD_HOME}/$1 elsemkdir ${PROD_HOME}/$1/bin/cp ${GIT_REPOSITORY_HOME}/$1/target/*-0.0.1-SNAPSHOT.jar ${PROD_HOME}/$1 fiecho "============停止項目=============" jar_name=`jps |awk -F" " '{ print $2 }'| egrep ^$1.*jar$` pid=`jps |grep ${jar_name} | awk -F" " '{ print $1 }'` echo ${pid} kill -15 ${pid}echo "================sleep 10s=========================" for i in 1 2 3 4 5 6 7 8 9 10 doecho ${i}"s"sleep 1s doneecho "============啟動項目=============" nohup java -jar ${PROD_HOME}/$1/*-0.0.1-SNAPSHOT.jar > /dev/null 2>&1 & echo -e "===========Deploy Success============="

    else
    echo -e “=Deploy Error===”
    fi


  • 1-9 ??

  • 總結(jié)

    以上是生活随笔為你收集整理的100多个shell脚本的例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    精品国产国产综合精品 | 精品乱码久久久久久久 | 久久久久99精品成人片 | 无遮挡啪啪摇乳动态图 | 亚洲精品国产精品乱码不卡 | 亚洲一区二区三区偷拍女厕 | 99久久99久久免费精品蜜桃 | 免费国产黄网站在线观看 | 成人精品天堂一区二区三区 | 亚洲 a v无 码免 费 成 人 a v | 熟女俱乐部五十路六十路av | 亚洲精品久久久久久久久久久 | 国产婷婷色一区二区三区在线 | 草草网站影院白丝内射 | 在线视频网站www色 | 98国产精品综合一区二区三区 | 国产精品理论片在线观看 | 国内揄拍国内精品少妇国语 | 日韩欧美成人免费观看 | 国产一区二区三区精品视频 | 99久久99久久免费精品蜜桃 | а√资源新版在线天堂 | 国产精品人妻一区二区三区四 | 久久久婷婷五月亚洲97号色 | 久久zyz资源站无码中文动漫 | 精品偷拍一区二区三区在线看 | 性欧美疯狂xxxxbbbb | 精品无码国产自产拍在线观看蜜 | 亚洲精品成人av在线 | 999久久久国产精品消防器材 | 九月婷婷人人澡人人添人人爽 | 亚洲精品美女久久久久久久 | 国产精品久久久av久久久 | 中文字幕久久久久人妻 | 国产精品久久久久久无码 | 中文久久乱码一区二区 | 夜夜躁日日躁狠狠久久av | 久久国产精品偷任你爽任你 | 国产猛烈高潮尖叫视频免费 | 初尝人妻少妇中文字幕 | 中文字幕精品av一区二区五区 | 国产午夜福利100集发布 | 好男人www社区 | 精品久久久久久人妻无码中文字幕 | 色一情一乱一伦一区二区三欧美 | 鲁鲁鲁爽爽爽在线视频观看 | 妺妺窝人体色www婷婷 | 天堂无码人妻精品一区二区三区 | 成人欧美一区二区三区 | 熟妇人妻无码xxx视频 | 日日摸日日碰夜夜爽av | 东京一本一道一二三区 | 久久婷婷五月综合色国产香蕉 | 午夜男女很黄的视频 | 99久久久无码国产aaa精品 | 国产 精品 自在自线 | 国内丰满熟女出轨videos | 午夜福利试看120秒体验区 | 国产av无码专区亚洲awww | 宝宝好涨水快流出来免费视频 | 一本一道久久综合久久 | 亚洲欧美日韩国产精品一区二区 | 久久国产精品二国产精品 | 精品人人妻人人澡人人爽人人 | 久久精品人妻少妇一区二区三区 | 秋霞成人午夜鲁丝一区二区三区 | 亚洲精品国产精品乱码不卡 | 日本护士xxxxhd少妇 | 久久久久久国产精品无码下载 | 日韩在线不卡免费视频一区 | 国产精品永久免费视频 | 大肉大捧一进一出好爽视频 | 精品人妻人人做人人爽 | 性开放的女人aaa片 | 激情亚洲一区国产精品 | 狠狠色丁香久久婷婷综合五月 | 久久人人爽人人爽人人片av高清 | 精品熟女少妇av免费观看 | 亚洲国产成人av在线观看 | 99久久99久久免费精品蜜桃 | 波多野结衣aⅴ在线 | 好爽又高潮了毛片免费下载 | 欧美 亚洲 国产 另类 | 性史性农村dvd毛片 | av无码电影一区二区三区 | 久久精品国产一区二区三区肥胖 | 国模大胆一区二区三区 | 日欧一片内射va在线影院 | 久久久www成人免费毛片 | 欧美精品在线观看 | 性欧美牲交xxxxx视频 | 亚洲色欲色欲欲www在线 | 精品人妻人人做人人爽夜夜爽 | 欧美黑人性暴力猛交喷水 | 天天躁夜夜躁狠狠是什么心态 | 国产 精品 自在自线 | 国产在线精品一区二区三区直播 | 少妇太爽了在线观看 | 日韩av无码一区二区三区不卡 | 国产乱人无码伦av在线a | 久久国语露脸国产精品电影 | 国产乱子伦视频在线播放 | 国产精品久久久久7777 | 亚洲区欧美区综合区自拍区 | 久久久www成人免费毛片 | 内射后入在线观看一区 | 精品人人妻人人澡人人爽人人 | 国产成人无码区免费内射一片色欲 | 男女下面进入的视频免费午夜 | 国产内射爽爽大片视频社区在线 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 一本无码人妻在中文字幕免费 | 欧美成人家庭影院 | 一二三四社区在线中文视频 | 国产成人无码av片在线观看不卡 | 男人扒开女人内裤强吻桶进去 | 亚洲狠狠婷婷综合久久 | 18精品久久久无码午夜福利 | 国产成人精品久久亚洲高清不卡 | 欧美人与动性行为视频 | 色欲人妻aaaaaaa无码 | 性史性农村dvd毛片 | 中文无码伦av中文字幕 | 无码精品人妻一区二区三区av | 丝袜美腿亚洲一区二区 | 久久久国产精品无码免费专区 | 日本一卡2卡3卡四卡精品网站 | 亚洲欧美色中文字幕在线 | 偷窥日本少妇撒尿chinese | 国产超碰人人爽人人做人人添 | 扒开双腿吃奶呻吟做受视频 | 国产片av国语在线观看 | 国产极品美女高潮无套在线观看 | 中文字幕无码av激情不卡 | 欧美日韩色另类综合 | 色综合久久中文娱乐网 | 成人欧美一区二区三区黑人免费 | 久久久久久九九精品久 | 少妇被粗大的猛进出69影院 | 亚洲精品综合五月久久小说 | 99er热精品视频 | 精品久久久久久人妻无码中文字幕 | 一区二区三区乱码在线 | 欧洲 | 又黄又爽又色的视频 | 西西人体www44rt大胆高清 | 国产在线精品一区二区高清不卡 | 97夜夜澡人人爽人人喊中国片 | 亚洲一区二区三区在线观看网站 | 男人扒开女人内裤强吻桶进去 | 欧美丰满老熟妇xxxxx性 | 国产福利视频一区二区 | 亚洲 日韩 欧美 成人 在线观看 | 波多野结衣aⅴ在线 | 日韩欧美成人免费观看 | 国产精品.xx视频.xxtv | 午夜男女很黄的视频 | 亚洲色欲色欲天天天www | 无码人妻黑人中文字幕 | 精品乱码久久久久久久 | 亚洲码国产精品高潮在线 | 免费无码的av片在线观看 | 亚洲精品一区二区三区四区五区 | 中文字幕无码人妻少妇免费 | 欧美高清在线精品一区 | 免费无码一区二区三区蜜桃大 | 精品一区二区三区波多野结衣 | 久久国产精品二国产精品 | 亚洲精品综合五月久久小说 | 亚洲成a人片在线观看日本 | av在线亚洲欧洲日产一区二区 | 国产熟妇高潮叫床视频播放 | 日本一区二区三区免费高清 | 无码精品人妻一区二区三区av | 国产乱人无码伦av在线a | 国产在热线精品视频 | 真人与拘做受免费视频一 | 国产av一区二区三区最新精品 | 久久精品国产一区二区三区肥胖 | 欧美熟妇另类久久久久久不卡 | 国产艳妇av在线观看果冻传媒 | 中文字幕无码乱人伦 | 日韩视频 中文字幕 视频一区 | 领导边摸边吃奶边做爽在线观看 | 黑人大群体交免费视频 | 亚洲国产成人a精品不卡在线 | 亚洲精品www久久久 | 牲欲强的熟妇农村老妇女 | 日本精品人妻无码77777 天堂一区人妻无码 | 日韩欧美成人免费观看 | 高中生自慰www网站 | 香蕉久久久久久av成人 | 任你躁在线精品免费 | 巨爆乳无码视频在线观看 | 人妻少妇精品久久 | 久久午夜无码鲁丝片午夜精品 | 伊在人天堂亚洲香蕉精品区 | 成人无码视频在线观看网站 | av香港经典三级级 在线 | 性欧美牲交xxxxx视频 | 内射爽无广熟女亚洲 | 欧美高清在线精品一区 | 久久五月精品中文字幕 | 精品久久综合1区2区3区激情 | 成熟妇人a片免费看网站 | 国产精品鲁鲁鲁 | 日本熟妇乱子伦xxxx | 天海翼激烈高潮到腰振不止 | 狂野欧美性猛xxxx乱大交 | 疯狂三人交性欧美 | 久久精品国产大片免费观看 | 在线看片无码永久免费视频 | 日日摸日日碰夜夜爽av | 又湿又紧又大又爽a视频国产 | 红桃av一区二区三区在线无码av | 东北女人啪啪对白 | 日韩精品a片一区二区三区妖精 | 久久www免费人成人片 | 国产另类ts人妖一区二区 | 乱码午夜-极国产极内射 | 日韩欧美群交p片內射中文 | 国产舌乚八伦偷品w中 | 亚洲日韩av一区二区三区四区 | 18精品久久久无码午夜福利 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产情侣作爱视频免费观看 | 精品久久久久香蕉网 | 色噜噜亚洲男人的天堂 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 乱码午夜-极国产极内射 | 秋霞成人午夜鲁丝一区二区三区 | 无码帝国www无码专区色综合 | 波多野42部无码喷潮在线 | 99久久精品无码一区二区毛片 | 久久国产自偷自偷免费一区调 | 久久久久亚洲精品中文字幕 | 国产精品亚洲综合色区韩国 | 在线a亚洲视频播放在线观看 | 日本又色又爽又黄的a片18禁 | 日日碰狠狠躁久久躁蜜桃 | 久久精品国产日本波多野结衣 | 亚洲日韩中文字幕在线播放 | 99riav国产精品视频 | 亚洲国产精品一区二区第一页 | 日韩人妻无码中文字幕视频 | 99er热精品视频 | 1000部夫妻午夜免费 | 亚洲小说图区综合在线 | 天天拍夜夜添久久精品大 | 国产精品怡红院永久免费 | 中文字幕精品av一区二区五区 | 亚洲中文无码av永久不收费 | 国产欧美精品一区二区三区 | 亚洲狠狠婷婷综合久久 | 精品国产av色一区二区深夜久久 | 中文字幕人成乱码熟女app | 97久久精品无码一区二区 | 国产精品第一国产精品 | 国产深夜福利视频在线 | 国产成人综合美国十次 | 色综合久久网 | 99久久精品无码一区二区毛片 | 欧美阿v高清资源不卡在线播放 | 国产精品-区区久久久狼 | 美女扒开屁股让男人桶 | 18黄暴禁片在线观看 | 精品无码国产自产拍在线观看蜜 | 国产成人综合在线女婷五月99播放 | 99er热精品视频 | 国产精品a成v人在线播放 | 伊人久久大香线蕉av一区二区 | 亚洲综合久久一区二区 | 亚洲熟妇自偷自拍另类 | 99精品视频在线观看免费 | 午夜精品久久久内射近拍高清 | 国产人妻大战黑人第1集 | 精品成人av一区二区三区 | 午夜免费福利小电影 | 无码人妻av免费一区二区三区 | 久久久精品欧美一区二区免费 | 欧美人妻一区二区三区 | 欧美高清在线精品一区 | 亚洲自偷自偷在线制服 | 久久天天躁狠狠躁夜夜免费观看 | 国精品人妻无码一区二区三区蜜柚 | 精品久久久无码中文字幕 | 亚洲天堂2017无码中文 | 大地资源中文第3页 | 久久综合狠狠综合久久综合88 | 国产情侣作爱视频免费观看 | 亚洲 激情 小说 另类 欧美 | 丰满人妻被黑人猛烈进入 | 亚洲日韩一区二区三区 | 国产成人综合美国十次 | 亚洲成a人一区二区三区 | 无码人妻精品一区二区三区下载 | 亚洲成在人网站无码天堂 | 久9re热视频这里只有精品 | 性啪啪chinese东北女人 | 日本肉体xxxx裸交 | 亚洲综合色区中文字幕 | √8天堂资源地址中文在线 | 台湾无码一区二区 | 亚洲自偷自偷在线制服 | 亚洲精品久久久久中文第一幕 | 中文精品久久久久人妻不卡 | 国产无套内射久久久国产 | 一二三四社区在线中文视频 | 国产9 9在线 | 中文 | 一二三四在线观看免费视频 | 色综合久久久久综合一本到桃花网 | 老熟妇乱子伦牲交视频 | 久久 国产 尿 小便 嘘嘘 | 在线成人www免费观看视频 | 久久99精品国产.久久久久 | 131美女爱做视频 | 日本一区二区更新不卡 | 中文无码成人免费视频在线观看 | 人妻插b视频一区二区三区 | 中文精品无码中文字幕无码专区 | 亚洲一区二区三区四区 | 久久综合给久久狠狠97色 | 香港三级日本三级妇三级 | 又大又黄又粗又爽的免费视频 | 免费无码的av片在线观看 | 无码中文字幕色专区 | 人人妻人人澡人人爽人人精品浪潮 | 色欲人妻aaaaaaa无码 | 久热国产vs视频在线观看 | 中文字幕+乱码+中文字幕一区 | 精品无码国产自产拍在线观看蜜 | 精品国偷自产在线 | 乱中年女人伦av三区 | 精品国产aⅴ无码一区二区 | 久久久久成人片免费观看蜜芽 | 国产69精品久久久久app下载 | 好男人社区资源 | 1000部夫妻午夜免费 | 夜夜躁日日躁狠狠久久av | 亚洲成色www久久网站 | 国产午夜精品一区二区三区嫩草 | 性欧美videos高清精品 | 亚洲国产精品毛片av不卡在线 | 青青草原综合久久大伊人精品 | 国产特级毛片aaaaaaa高清 | 中文字幕日韩精品一区二区三区 | 国产精品18久久久久久麻辣 | ass日本丰满熟妇pics | 欧美国产日韩久久mv | 国产xxx69麻豆国语对白 | 曰韩少妇内射免费播放 | 国产凸凹视频一区二区 | 免费乱码人妻系列无码专区 | 色婷婷av一区二区三区之红樱桃 | 国产极品视觉盛宴 | 超碰97人人做人人爱少妇 | 色狠狠av一区二区三区 | 欧美成人免费全部网站 | 日日碰狠狠躁久久躁蜜桃 | 人妻aⅴ无码一区二区三区 | 亚洲综合伊人久久大杳蕉 | a在线观看免费网站大全 | 熟女少妇在线视频播放 | 红桃av一区二区三区在线无码av | 天海翼激烈高潮到腰振不止 | 欧美高清在线精品一区 | 少妇无码一区二区二三区 | 又大又硬又黄的免费视频 | 丰腴饱满的极品熟妇 | 亚洲综合无码一区二区三区 | 精品无人国产偷自产在线 | 色五月丁香五月综合五月 | 亚洲一区二区三区偷拍女厕 | 欧美日韩在线亚洲综合国产人 | 久久综合给久久狠狠97色 | 午夜精品一区二区三区的区别 | 国产成人无码a区在线观看视频app | 欧美日本免费一区二区三区 | www国产亚洲精品久久网站 | 六月丁香婷婷色狠狠久久 | 亚洲一区二区三区 | 精品无码av一区二区三区 | 中国女人内谢69xxxx | 婷婷五月综合缴情在线视频 | 天堂а√在线地址中文在线 | 成人无码视频在线观看网站 | 国产精品人妻一区二区三区四 | 国产一区二区三区精品视频 | 女高中生第一次破苞av | 日韩人妻系列无码专区 | 国产精品亚洲а∨无码播放麻豆 | 久久久久99精品国产片 | 67194成是人免费无码 | aa片在线观看视频在线播放 | 国产精品亚洲综合色区韩国 | 波多野结衣高清一区二区三区 | 中文字幕无码日韩专区 | 精品国产一区二区三区四区在线看 | 97久久国产亚洲精品超碰热 | 精品水蜜桃久久久久久久 | 人人妻人人澡人人爽欧美精品 | 在线精品国产一区二区三区 | 国产午夜福利亚洲第一 | 久久久中文字幕日本无吗 | 国内精品一区二区三区不卡 | 男人扒开女人内裤强吻桶进去 | 久久国产36精品色熟妇 | 98国产精品综合一区二区三区 | 中文字幕色婷婷在线视频 | 无码国内精品人妻少妇 | 国产超碰人人爽人人做人人添 | 中文字幕日产无线码一区 | 精品国偷自产在线视频 | 最新国产乱人伦偷精品免费网站 | 55夜色66夜色国产精品视频 | 亚洲欧美中文字幕5发布 | 玩弄少妇高潮ⅹxxxyw | 激情内射日本一区二区三区 | 熟女少妇人妻中文字幕 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲一区二区三区无码久久 | 国产精品a成v人在线播放 | 对白脏话肉麻粗话av | 久久综合给合久久狠狠狠97色 | 粉嫩少妇内射浓精videos | 日日噜噜噜噜夜夜爽亚洲精品 | 日韩精品a片一区二区三区妖精 | 漂亮人妻洗澡被公强 日日躁 | 亚洲欧美国产精品专区久久 | 少妇无码av无码专区在线观看 | 亚洲国产成人av在线观看 | 久久精品中文闷骚内射 | www国产亚洲精品久久久日本 | 无码精品国产va在线观看dvd | 正在播放东北夫妻内射 | 无码毛片视频一区二区本码 | 亚洲s码欧洲m码国产av | 久久这里只有精品视频9 | 日本熟妇乱子伦xxxx | 亚洲精品鲁一鲁一区二区三区 | 国产一区二区三区日韩精品 | 天天燥日日燥 | 午夜精品久久久久久久久 | 国产深夜福利视频在线 | 粉嫩少妇内射浓精videos | 欧美性黑人极品hd | 日本免费一区二区三区最新 | 久久久精品成人免费观看 | 国内综合精品午夜久久资源 | 国产精品18久久久久久麻辣 | 久久精品国产精品国产精品污 | 日本肉体xxxx裸交 | 色综合天天综合狠狠爱 | 国产成人综合色在线观看网站 | 六月丁香婷婷色狠狠久久 | 亚洲精品无码人妻无码 | 麻豆精品国产精华精华液好用吗 | 图片区 小说区 区 亚洲五月 | 大地资源中文第3页 | 99er热精品视频 | 国产真实伦对白全集 | 午夜精品久久久久久久 | 男女下面进入的视频免费午夜 | 丰满少妇人妻久久久久久 | 亚洲日韩av一区二区三区四区 | 2020久久超碰国产精品最新 | av无码久久久久不卡免费网站 | 国产在线aaa片一区二区99 | 国产suv精品一区二区五 | 一本久道久久综合婷婷五月 | 欧美喷潮久久久xxxxx | 大地资源网第二页免费观看 | 精品国产麻豆免费人成网站 | 无码人中文字幕 | 日韩av无码一区二区三区 | 狠狠色欧美亚洲狠狠色www | 国产成人一区二区三区在线观看 | 欧美野外疯狂做受xxxx高潮 | 美女毛片一区二区三区四区 | 伊人久久大香线蕉av一区二区 | 丁香花在线影院观看在线播放 | 午夜丰满少妇性开放视频 | 国产成人av免费观看 | 日本一区二区更新不卡 | a在线观看免费网站大全 | 啦啦啦www在线观看免费视频 | 亚洲 欧美 激情 小说 另类 | 欧美黑人性暴力猛交喷水 | 国产欧美亚洲精品a | 岛国片人妻三上悠亚 | 夜夜夜高潮夜夜爽夜夜爰爰 | 精品国产福利一区二区 | 国产亚洲精品久久久久久国模美 | 成人无码影片精品久久久 | 中文精品无码中文字幕无码专区 | 国产综合在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲性无码av中文字幕 | 一本色道久久综合狠狠躁 | 无码av岛国片在线播放 | 亚洲成a人片在线观看日本 | 娇妻被黑人粗大高潮白浆 | 亚洲中文字幕在线无码一区二区 | 波多野结衣av在线观看 | 久在线观看福利视频 | 亚洲人成网站免费播放 | 中文字幕日产无线码一区 | 丰满人妻精品国产99aⅴ | 波多野结衣高清一区二区三区 | 精品无码一区二区三区爱欲 | 日韩在线不卡免费视频一区 | 国产成人精品久久亚洲高清不卡 | 高清不卡一区二区三区 | 国产人妻久久精品二区三区老狼 | 一二三四社区在线中文视频 | 国产成人精品久久亚洲高清不卡 | 国产成人午夜福利在线播放 | 国产黑色丝袜在线播放 | 好男人www社区 | 久久久久国色av免费观看性色 | 国产一区二区不卡老阿姨 | 国产9 9在线 | 中文 | 久久zyz资源站无码中文动漫 | 成人免费视频一区二区 | 欧美xxxx黑人又粗又长 | 国产成人无码av在线影院 | 国产精品自产拍在线观看 | 亚洲人成影院在线无码按摩店 | 久久人人爽人人人人片 | 国产激情无码一区二区app | 一本久久a久久精品亚洲 | 亚洲精品欧美二区三区中文字幕 | 国产精品多人p群无码 | 国语自产偷拍精品视频偷 | 男人的天堂av网站 | 天堂在线观看www | 人妻中文无码久热丝袜 | √天堂资源地址中文在线 | 少妇无码av无码专区在线观看 | 性色av无码免费一区二区三区 | www国产亚洲精品久久久日本 | 色综合久久中文娱乐网 | 免费观看黄网站 | 无码人中文字幕 | 97精品国产97久久久久久免费 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 中文字幕 亚洲精品 第1页 | 国产精品爱久久久久久久 | 熟女俱乐部五十路六十路av | 中文字幕无码人妻少妇免费 | 一区二区传媒有限公司 | 亚洲国精产品一二二线 | 色综合久久久久综合一本到桃花网 | 日韩人妻少妇一区二区三区 | 精品久久久久久亚洲精品 | 玩弄中年熟妇正在播放 | 国产激情一区二区三区 | 国产成人精品久久亚洲高清不卡 | 午夜精品一区二区三区的区别 | 人妻无码久久精品人妻 | 国产成人精品优优av | 国产一精品一av一免费 | 成人免费视频视频在线观看 免费 | 久久久无码中文字幕久... | 欧美日韩久久久精品a片 | 人人妻人人藻人人爽欧美一区 | 熟女体下毛毛黑森林 | 日本护士xxxxhd少妇 | 精品欧洲av无码一区二区三区 | 伊人久久婷婷五月综合97色 | 中文字幕日韩精品一区二区三区 | 亚洲天堂2017无码 | 久久这里只有精品视频9 | 四虎国产精品免费久久 | 国产精品无码永久免费888 | 国产亚洲精品久久久久久久 | 国产性生大片免费观看性 | 国产97人人超碰caoprom | 久久精品无码一区二区三区 | 女人被男人躁得好爽免费视频 | 小sao货水好多真紧h无码视频 | 波多野结衣高清一区二区三区 | 日韩精品无码一区二区中文字幕 | 国产亚洲精品久久久闺蜜 | 久久国产精品_国产精品 | 国产偷国产偷精品高清尤物 | 亚洲成a人片在线观看无码 | 久久久精品成人免费观看 | 未满小14洗澡无码视频网站 | 午夜福利一区二区三区在线观看 | 亚洲成av人片在线观看无码不卡 | 樱花草在线播放免费中文 | 人人妻人人澡人人爽欧美精品 | 亚洲欧美综合区丁香五月小说 | 国产精品办公室沙发 | 久久午夜无码鲁丝片秋霞 | 人人澡人人透人人爽 | 国产精品无码永久免费888 | 国产明星裸体无码xxxx视频 | 色综合久久久无码中文字幕 | 一本久道高清无码视频 | 内射白嫩少妇超碰 | 撕开奶罩揉吮奶头视频 | 精品国产麻豆免费人成网站 | 国产激情精品一区二区三区 | 日本一本二本三区免费 | 无码国产色欲xxxxx视频 | 国产精品无码永久免费888 | 76少妇精品导航 | 婷婷五月综合激情中文字幕 | 亚洲日本va午夜在线电影 | 中文无码成人免费视频在线观看 | 国产黑色丝袜在线播放 | 中文字幕无码日韩欧毛 | 国产超碰人人爽人人做人人添 | 色婷婷av一区二区三区之红樱桃 | 国产人妻人伦精品1国产丝袜 | 狂野欧美激情性xxxx | 奇米影视7777久久精品人人爽 | 国产精品亚洲综合色区韩国 | 麻豆成人精品国产免费 | 无遮挡国产高潮视频免费观看 | 中文精品久久久久人妻不卡 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲s色大片在线观看 | 国产精品久久久一区二区三区 | 久热国产vs视频在线观看 | 欧美乱妇无乱码大黄a片 | 亚洲爆乳精品无码一区二区三区 | 国产香蕉尹人综合在线观看 | 女人被男人躁得好爽免费视频 | 国产高清av在线播放 | 久久国产36精品色熟妇 | 久久99精品国产麻豆蜜芽 | 在线欧美精品一区二区三区 | 国内少妇偷人精品视频免费 | 国产人妻久久精品二区三区老狼 | 伊人久久大香线蕉午夜 | 欧洲欧美人成视频在线 | 午夜熟女插插xx免费视频 | 麻豆国产丝袜白领秘书在线观看 | 亚洲阿v天堂在线 | 5858s亚洲色大成网站www | 色综合久久久无码网中文 | 婷婷六月久久综合丁香 | 精品久久久久香蕉网 | 午夜精品久久久内射近拍高清 | 亚洲中文字幕无码一久久区 | 色噜噜亚洲男人的天堂 | 少妇人妻av毛片在线看 | 久久久久av无码免费网 | 无码播放一区二区三区 | 欧美阿v高清资源不卡在线播放 | 狠狠亚洲超碰狼人久久 | 国产suv精品一区二区五 | 亚洲天堂2017无码 | 日韩精品无码免费一区二区三区 | 亚洲一区二区三区在线观看网站 | 国产无遮挡吃胸膜奶免费看 | 久久精品国产99久久6动漫 | 欧美freesex黑人又粗又大 | 亚洲乱码中文字幕在线 | 99视频精品全部免费免费观看 | 内射巨臀欧美在线视频 | 纯爱无遮挡h肉动漫在线播放 | 国产午夜亚洲精品不卡下载 | 成人女人看片免费视频放人 | 亚洲人成网站在线播放942 | a片在线免费观看 | 久久综合久久自在自线精品自 | 色欲av亚洲一区无码少妇 | 狠狠色噜噜狠狠狠狠7777米奇 | 装睡被陌生人摸出水好爽 | 精品一区二区三区无码免费视频 | 真人与拘做受免费视频 | 99久久精品无码一区二区毛片 | 久久午夜无码鲁丝片午夜精品 | 亚洲国产精品无码久久久久高潮 | 日韩av无码一区二区三区不卡 | 日韩欧美中文字幕公布 | 国产超级va在线观看视频 | 内射后入在线观看一区 | 国产精品人人妻人人爽 | 亚洲国产精品久久久天堂 | 精品国产国产综合精品 | 亚洲精品久久久久久久久久久 | 国产特级毛片aaaaaa高潮流水 | 久久综合给合久久狠狠狠97色 | 亚洲成av人在线观看网址 | 乱人伦中文视频在线观看 | 国产精品久久久久久亚洲影视内衣 | 九九久久精品国产免费看小说 | 精品人妻人人做人人爽 | 少女韩国电视剧在线观看完整 | 成年美女黄网站色大免费全看 | 亚洲va欧美va天堂v国产综合 | 给我免费的视频在线观看 | 18无码粉嫩小泬无套在线观看 | 男人的天堂av网站 | 国产精品.xx视频.xxtv | 久久久久久久人妻无码中文字幕爆 | 99久久久无码国产aaa精品 | 国产97人人超碰caoprom | 国产精品国产三级国产专播 | 中文字幕人成乱码熟女app | 国产精品第一国产精品 | 丝袜 中出 制服 人妻 美腿 | 内射巨臀欧美在线视频 | 青草视频在线播放 | 天天躁日日躁狠狠躁免费麻豆 | 鲁大师影院在线观看 | 久久精品国产99久久6动漫 | 伊在人天堂亚洲香蕉精品区 | 奇米影视888欧美在线观看 | 国产精品久久久久久亚洲毛片 | 国产精品亚洲五月天高清 | 中文字幕人妻无码一区二区三区 | 久久人人97超碰a片精品 | 国产sm调教视频在线观看 | 西西人体www44rt大胆高清 | 老太婆性杂交欧美肥老太 | www成人国产高清内射 | 熟妇人妻无码xxx视频 | 国产精品igao视频网 | 99久久精品日本一区二区免费 | 噜噜噜亚洲色成人网站 | 久久无码专区国产精品s | 国产内射老熟女aaaa | 婷婷五月综合激情中文字幕 | 高潮毛片无遮挡高清免费 | 日本丰满熟妇videos | 日韩亚洲欧美精品综合 | 国产精品办公室沙发 | 国产 浪潮av性色四虎 | 精品国产成人一区二区三区 | 丝袜人妻一区二区三区 | 亚洲男人av香蕉爽爽爽爽 | 婷婷六月久久综合丁香 | 我要看www免费看插插视频 | 久久zyz资源站无码中文动漫 | 国产97在线 | 亚洲 | 夜夜影院未满十八勿进 | 精品熟女少妇av免费观看 | 日韩少妇内射免费播放 | 国产精品亚洲а∨无码播放麻豆 | 国产精品亚洲lv粉色 | 美女极度色诱视频国产 | 日韩精品乱码av一区二区 | 欧美国产日韩亚洲中文 | 国产精品18久久久久久麻辣 | 国产精品福利视频导航 | 澳门永久av免费网站 | 精品国产精品久久一区免费式 | 性啪啪chinese东北女人 | 亚洲乱码国产乱码精品精 | 纯爱无遮挡h肉动漫在线播放 | 国产亚洲精品久久久闺蜜 | 国产偷自视频区视频 | 成熟女人特级毛片www免费 | 在教室伦流澡到高潮hnp视频 | 久久99精品久久久久婷婷 | 国产内射爽爽大片视频社区在线 | 曰本女人与公拘交酡免费视频 | 无码人妻丰满熟妇区毛片18 | 黑人巨大精品欧美黑寡妇 | 色婷婷av一区二区三区之红樱桃 | 欧美熟妇另类久久久久久多毛 | 又大又紧又粉嫩18p少妇 | 少妇无套内谢久久久久 | 在线欧美精品一区二区三区 | 性色av无码免费一区二区三区 | 亚洲国产av精品一区二区蜜芽 | 好男人社区资源 | 在线播放亚洲第一字幕 | 中文精品无码中文字幕无码专区 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 欧美人与牲动交xxxx | 性欧美大战久久久久久久 | 熟妇人妻无乱码中文字幕 | 亚洲精品综合一区二区三区在线 | 女人被男人躁得好爽免费视频 | 欧美一区二区三区 | 国产成人无码a区在线观看视频app | 思思久久99热只有频精品66 | 国产va免费精品观看 | 图片区 小说区 区 亚洲五月 | 国产热a欧美热a在线视频 | 久久亚洲精品中文字幕无男同 | 人妻夜夜爽天天爽三区 | 欧美老人巨大xxxx做受 | 综合网日日天干夜夜久久 | 国内少妇偷人精品视频免费 | 国产精品va在线播放 | 人人妻人人澡人人爽欧美一区九九 | 国内少妇偷人精品视频 | 国产在线无码精品电影网 | 日本熟妇人妻xxxxx人hd | 一本久道久久综合婷婷五月 | 婷婷丁香五月天综合东京热 | 欧美熟妇另类久久久久久不卡 | 亚洲s色大片在线观看 | 日韩视频 中文字幕 视频一区 | 亚洲日韩中文字幕在线播放 | 性啪啪chinese东北女人 | 天堂一区人妻无码 | 无遮挡啪啪摇乳动态图 | 亚洲乱码中文字幕在线 | 亚洲精品午夜国产va久久成人 | 久久综合九色综合97网 | 无遮挡国产高潮视频免费观看 | 久激情内射婷内射蜜桃人妖 | 久激情内射婷内射蜜桃人妖 | 丝袜 中出 制服 人妻 美腿 | 九九在线中文字幕无码 | 亚洲中文字幕av在天堂 | 国产99久久精品一区二区 | 国产人妻人伦精品1国产丝袜 | 女人和拘做爰正片视频 | 日韩精品一区二区av在线 | 国内精品人妻无码久久久影院蜜桃 | 性色欲情网站iwww九文堂 | 99视频精品全部免费免费观看 | 国产精华av午夜在线观看 | 日韩精品乱码av一区二区 | 精品亚洲韩国一区二区三区 | 人妻天天爽夜夜爽一区二区 | 中文字幕无码av激情不卡 | 东京热男人av天堂 | 亚洲精品国偷拍自产在线麻豆 | 国产又粗又硬又大爽黄老大爷视 | 97人妻精品一区二区三区 | 色综合久久久无码网中文 | 天堂久久天堂av色综合 | 好屌草这里只有精品 | 久久精品国产99久久6动漫 | 欧美三级不卡在线观看 | 四虎影视成人永久免费观看视频 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲精品一区二区三区大桥未久 | 欧美肥老太牲交大战 | 成人欧美一区二区三区黑人 | 无码纯肉视频在线观看 | 波多野结衣一区二区三区av免费 | 丰满人妻一区二区三区免费视频 | 久热国产vs视频在线观看 | 国产亚洲精品久久久久久国模美 | 亚洲自偷自拍另类第1页 | 国产乱人伦偷精品视频 | 特黄特色大片免费播放器图片 | 精品久久久久久亚洲精品 | 中国女人内谢69xxxx | 中文精品无码中文字幕无码专区 | 又黄又爽又色的视频 | 宝宝好涨水快流出来免费视频 | 国产精品久久久久7777 | 亚洲 日韩 欧美 成人 在线观看 | 老头边吃奶边弄进去呻吟 | 久久99精品国产麻豆蜜芽 | 久久国产精品_国产精品 | 免费无码的av片在线观看 | 国产在线精品一区二区高清不卡 | 亚洲国产精品无码久久久久高潮 | 精品国产一区二区三区四区 | 国产精品人妻一区二区三区四 | 久久午夜无码鲁丝片 | 免费国产成人高清在线观看网站 | 国产精品福利视频导航 | 国产激情艳情在线看视频 | 色噜噜亚洲男人的天堂 | 丰满少妇高潮惨叫视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美成人午夜精品久久久 | 色婷婷久久一区二区三区麻豆 | 久久人人爽人人爽人人片av高清 | 亚洲阿v天堂在线 | 人妻有码中文字幕在线 | 永久黄网站色视频免费直播 | 波多野结衣一区二区三区av免费 | 亚洲一区二区三区含羞草 | 欧洲欧美人成视频在线 | 一个人看的视频www在线 | 国产香蕉尹人综合在线观看 | 无码人妻出轨黑人中文字幕 | 亚洲另类伦春色综合小说 | 妺妺窝人体色www在线小说 | 国产香蕉尹人视频在线 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲国产成人av在线观看 | 激情综合激情五月俺也去 | 国产成人精品优优av | 亚洲国精产品一二二线 | 国产精品人妻一区二区三区四 | 国产激情精品一区二区三区 | 亚洲成a人片在线观看日本 | 99视频精品全部免费免费观看 | 台湾无码一区二区 | 99精品无人区乱码1区2区3区 | 综合激情五月综合激情五月激情1 | 欧美人与物videos另类 | 国产免费无码一区二区视频 | 国产国语老龄妇女a片 | ass日本丰满熟妇pics | 亚洲日韩一区二区 | 麻豆果冻传媒2021精品传媒一区下载 | 久久午夜无码鲁丝片午夜精品 | 精品国偷自产在线视频 | 99久久久无码国产精品免费 | www国产精品内射老师 | 人妻天天爽夜夜爽一区二区 | 乱人伦中文视频在线观看 | 天天拍夜夜添久久精品大 | 久久婷婷五月综合色国产香蕉 | 综合网日日天干夜夜久久 | 99视频精品全部免费免费观看 | 99在线 | 亚洲 | 精品无码av一区二区三区 | 亚洲s色大片在线观看 | 国产莉萝无码av在线播放 | 熟女俱乐部五十路六十路av | 精品国偷自产在线 | 极品尤物被啪到呻吟喷水 | 欧美日韩一区二区综合 | 亚洲人成网站色7799 | 成人女人看片免费视频放人 | 成人一区二区免费视频 | 国产女主播喷水视频在线观看 | av无码不卡在线观看免费 | 成人一在线视频日韩国产 | 永久免费观看国产裸体美女 | 亚洲日韩av一区二区三区中文 | √天堂中文官网8在线 | 激情爆乳一区二区三区 | 蜜桃臀无码内射一区二区三区 | 少妇性l交大片欧洲热妇乱xxx | 欧美日本精品一区二区三区 | 日本丰满熟妇videos | 亚洲精品一区二区三区婷婷月 | 97精品国产97久久久久久免费 | 国产成人久久精品流白浆 | 中文字幕无码视频专区 | 国产香蕉尹人视频在线 | 水蜜桃亚洲一二三四在线 | 日本大乳高潮视频在线观看 | 国产精品久久久久久亚洲影视内衣 | 精品久久久久香蕉网 | 中文字幕av日韩精品一区二区 | 亚洲综合伊人久久大杳蕉 | 日韩精品无码一区二区中文字幕 | 九九久久精品国产免费看小说 | 欧洲欧美人成视频在线 | 亚洲色欲久久久综合网东京热 | 成人试看120秒体验区 | 色诱久久久久综合网ywww | 欧美精品免费观看二区 | 久久久www成人免费毛片 | 日韩av激情在线观看 | 午夜男女很黄的视频 | 亚洲精品综合五月久久小说 | 日韩视频 中文字幕 视频一区 | 亚洲乱码中文字幕在线 | 婷婷丁香五月天综合东京热 | 欧美丰满熟妇xxxx性ppx人交 | 久久天天躁狠狠躁夜夜免费观看 | 麻豆md0077饥渴少妇 | www国产精品内射老师 | а√资源新版在线天堂 | 欧美乱妇无乱码大黄a片 | 丰满人妻精品国产99aⅴ | 黄网在线观看免费网站 | 国产人妻人伦精品1国产丝袜 | 日韩在线不卡免费视频一区 | 97资源共享在线视频 | 亚洲热妇无码av在线播放 | 亚洲成a人片在线观看无码3d | 精品无码国产自产拍在线观看蜜 | 免费人成在线视频无码 | 无套内谢的新婚少妇国语播放 | 在线视频网站www色 | 亚洲精品无码国产 | 大地资源网第二页免费观看 | 精品国产一区二区三区四区在线看 | 国产在线精品一区二区三区直播 | www国产精品内射老师 | 妺妺窝人体色www婷婷 | 国产精品美女久久久久av爽李琼 | 亚洲熟妇色xxxxx亚洲 | 四虎永久在线精品免费网址 | 一本精品99久久精品77 | 久久人人97超碰a片精品 | 欧美国产日韩亚洲中文 | 牲欲强的熟妇农村老妇女视频 | 日韩成人一区二区三区在线观看 | 亚洲va中文字幕无码久久不卡 | 亚洲精品国偷拍自产在线麻豆 | av人摸人人人澡人人超碰下载 | 日本护士毛茸茸高潮 | 波多野结衣av在线观看 | 国产亚洲精品久久久久久国模美 | 日产精品99久久久久久 | 乱人伦人妻中文字幕无码久久网 | 人妻少妇精品无码专区动漫 | 亚洲毛片av日韩av无码 | 亚洲国产精品成人久久蜜臀 | 中文字幕人成乱码熟女app | 亚洲国产日韩a在线播放 | 无码任你躁久久久久久久 | 日韩亚洲欧美精品综合 | 高潮毛片无遮挡高清免费 | 131美女爱做视频 | 精品国产国产综合精品 | 国产激情艳情在线看视频 | 内射白嫩少妇超碰 | 97资源共享在线视频 | www成人国产高清内射 | 欧美野外疯狂做受xxxx高潮 | 天天做天天爱天天爽综合网 | 国产精品亚洲一区二区三区喷水 | 一个人看的视频www在线 | 国产亚洲精品久久久久久久久动漫 | 久久亚洲精品中文字幕无男同 | 东京一本一道一二三区 | 性欧美牲交在线视频 | 大屁股大乳丰满人妻 | 高清无码午夜福利视频 | 日本精品高清一区二区 | 国产真实乱对白精彩久久 | 成人亚洲精品久久久久 | 在线a亚洲视频播放在线观看 | 欧美老人巨大xxxx做受 | 亚洲娇小与黑人巨大交 | 欧美人与禽猛交狂配 | 综合人妻久久一区二区精品 | 精品日本一区二区三区在线观看 | 亚拍精品一区二区三区探花 | 夜夜夜高潮夜夜爽夜夜爰爰 | 正在播放东北夫妻内射 | 99久久婷婷国产综合精品青草免费 | 国产莉萝无码av在线播放 | 午夜时刻免费入口 | 久久综合色之久久综合 | 久久人人爽人人爽人人片ⅴ | 无码国产色欲xxxxx视频 | 伊人色综合久久天天小片 | 免费男性肉肉影院 | 日本成熟视频免费视频 | 国产精品无码成人午夜电影 | 97久久精品无码一区二区 | 亚洲日本va中文字幕 | 亚洲一区二区三区偷拍女厕 | 无码人妻丰满熟妇区五十路百度 | 欧美 日韩 亚洲 在线 | 久久精品女人天堂av免费观看 | 色一情一乱一伦一区二区三欧美 | 伊人久久婷婷五月综合97色 | 亚洲春色在线视频 | 天堂亚洲免费视频 | 欧美 日韩 人妻 高清 中文 | 免费人成网站视频在线观看 | 日本熟妇大屁股人妻 | 国产精品无码成人午夜电影 | 欧洲极品少妇 | 大肉大捧一进一出好爽视频 | 蜜臀av在线播放 久久综合激激的五月天 | 日本精品人妻无码免费大全 | 久久精品视频在线看15 | 大胆欧美熟妇xx | 国产一区二区三区日韩精品 | 国产网红无码精品视频 | 日韩精品无码一本二本三本色 | 国产午夜手机精彩视频 | 国内精品一区二区三区不卡 | 亚洲午夜无码久久 | 四虎永久在线精品免费网址 | 欧美xxxx黑人又粗又长 | 97久久超碰中文字幕 | 乱人伦中文视频在线观看 | 婷婷五月综合激情中文字幕 | 欧美变态另类xxxx | 欧美激情内射喷水高潮 | 日本护士毛茸茸高潮 | 国产内射爽爽大片视频社区在线 | 国产97人人超碰caoprom | 性欧美牲交xxxxx视频 | 桃花色综合影院 | 国产人妻精品一区二区三区 | 人妻少妇精品无码专区二区 | 国产免费久久精品国产传媒 | 精品厕所偷拍各类美女tp嘘嘘 | 日韩视频 中文字幕 视频一区 | 亚洲国产精品成人久久蜜臀 | 特黄特色大片免费播放器图片 | 婷婷色婷婷开心五月四房播播 | 久久伊人色av天堂九九小黄鸭 | 亚欧洲精品在线视频免费观看 | 领导边摸边吃奶边做爽在线观看 | 又紧又大又爽精品一区二区 | 久久久精品国产sm最大网站 | 人人妻人人澡人人爽人人精品 | 丰满少妇弄高潮了www | 国产亚av手机在线观看 | 我要看www免费看插插视频 | 亚洲精品中文字幕久久久久 | 亚洲中文无码av永久不收费 | 欧美老人巨大xxxx做受 | 国模大胆一区二区三区 | 亚洲春色在线视频 | 国产av人人夜夜澡人人爽麻豆 | 亚洲成av人综合在线观看 | 国产美女极度色诱视频www | 欧美人与禽zoz0性伦交 | 99精品视频在线观看免费 | 人妻少妇精品视频专区 | 久久久久久av无码免费看大片 | 男人的天堂av网站 | 亚洲精品国产a久久久久久 | 亚洲中文字幕av在天堂 | 日韩亚洲欧美中文高清在线 | av人摸人人人澡人人超碰下载 | 久久精品人人做人人综合 | 国产一区二区三区四区五区加勒比 | 九月婷婷人人澡人人添人人爽 | 丝袜人妻一区二区三区 | 人妻少妇被猛烈进入中文字幕 | 国产成人无码av片在线观看不卡 | 人人爽人人爽人人片av亚洲 | 成人精品视频一区二区 | 亚洲精品午夜国产va久久成人 | www国产亚洲精品久久久日本 | 日韩精品无码一区二区中文字幕 | 内射巨臀欧美在线视频 | 欧美阿v高清资源不卡在线播放 | 国产色xx群视频射精 | 欧美一区二区三区 | 乱中年女人伦av三区 | av无码电影一区二区三区 | 麻豆国产人妻欲求不满 | 中文字幕久久久久人妻 | 欧美zoozzooz性欧美 | 精品久久8x国产免费观看 | 亚洲 另类 在线 欧美 制服 | 在线观看国产一区二区三区 | 中文字幕色婷婷在线视频 | 欧美老妇交乱视频在线观看 | 国产偷国产偷精品高清尤物 | 黑人玩弄人妻中文在线 | 国产成人精品三级麻豆 | 激情国产av做激情国产爱 | 亚洲a无码综合a国产av中文 | 免费人成在线视频无码 | 亚洲综合无码久久精品综合 | 久久97精品久久久久久久不卡 | 在线亚洲高清揄拍自拍一品区 | 国产香蕉尹人视频在线 | 麻豆成人精品国产免费 | 无码av免费一区二区三区试看 | 国产成人综合美国十次 | 俺去俺来也在线www色官网 | 亚洲小说春色综合另类 | 无码人妻精品一区二区三区不卡 | 国产一区二区三区四区五区加勒比 | 久久久久国色av免费观看性色 | 青草青草久热国产精品 | 高清无码午夜福利视频 | 久久久久久国产精品无码下载 | 国产无遮挡又黄又爽免费视频 | 国产精品二区一区二区aⅴ污介绍 | 丝袜美腿亚洲一区二区 | 久久久久99精品成人片 | 久久久婷婷五月亚洲97号色 | 免费乱码人妻系列无码专区 | 亚洲欧洲日本综合aⅴ在线 | a片免费视频在线观看 | 欧美日本免费一区二区三区 | 成人aaa片一区国产精品 | 亚洲国产成人av在线观看 | 99久久久无码国产aaa精品 | 丰满人妻被黑人猛烈进入 | 亚洲小说图区综合在线 | 亚洲熟熟妇xxxx | 奇米影视7777久久精品人人爽 | 精品厕所偷拍各类美女tp嘘嘘 | 中文字幕无码av波多野吉衣 | 亚洲中文字幕av在天堂 | 亚洲色大成网站www | 成人试看120秒体验区 | 国产口爆吞精在线视频 | 国产精品va在线播放 | 一本无码人妻在中文字幕免费 | 中文字幕乱妇无码av在线 | 欧美丰满熟妇xxxx | 亚洲熟妇色xxxxx欧美老妇 | 日韩精品乱码av一区二区 | 亚洲人成影院在线无码按摩店 | 激情亚洲一区国产精品 | 熟妇人妻中文av无码 | 国产午夜无码视频在线观看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 无码国内精品人妻少妇 | 1000部啪啪未满十八勿入下载 | 亚洲色无码一区二区三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产成人精品久久亚洲高清不卡 | 久久精品人妻少妇一区二区三区 | 国产精品鲁鲁鲁 | 乱码av麻豆丝袜熟女系列 | 少妇性l交大片 | 色综合视频一区二区三区 | 欧美老妇交乱视频在线观看 | 亚洲乱亚洲乱妇50p | 成 人 免费观看网站 | 国产在线无码精品电影网 | 两性色午夜视频免费播放 | 亚洲色大成网站www国产 | 成人精品一区二区三区中文字幕 | 午夜精品一区二区三区的区别 | 国产午夜福利亚洲第一 | 国产色视频一区二区三区 | 免费人成在线视频无码 | 国产高清不卡无码视频 | 精品成在人线av无码免费看 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲国产精华液网站w | 亚洲午夜无码久久 | 性生交大片免费看l | 人妻少妇精品无码专区二区 | 国产区女主播在线观看 | 日日橹狠狠爱欧美视频 | 丰满人妻翻云覆雨呻吟视频 | 一本精品99久久精品77 | 成人精品视频一区二区 | 免费人成在线视频无码 | 成人免费无码大片a毛片 | 精品无码成人片一区二区98 | 国产精品资源一区二区 | 国产莉萝无码av在线播放 | 久久久久久av无码免费看大片 | 亚洲 a v无 码免 费 成 人 a v | 中文字幕乱码亚洲无线三区 | 亚洲欧美日韩国产精品一区二区 | 国产 浪潮av性色四虎 | 午夜精品一区二区三区在线观看 | 精品一区二区三区波多野结衣 | 国产性生交xxxxx无码 | 天天做天天爱天天爽综合网 | 国产后入清纯学生妹 | 国产精品久久国产三级国 | 天天燥日日燥 | 亚洲日本va午夜在线电影 | 精品久久综合1区2区3区激情 | 97久久超碰中文字幕 | 一二三四社区在线中文视频 | 亚洲人交乣女bbw | 天堂无码人妻精品一区二区三区 | 欧洲精品码一区二区三区免费看 | 欧美精品一区二区精品久久 | 久激情内射婷内射蜜桃人妖 | 99久久久国产精品无码免费 | 日日碰狠狠丁香久燥 | 黑森林福利视频导航 | 精品午夜福利在线观看 | 丰满少妇熟乱xxxxx视频 | 精品无码一区二区三区的天堂 | 蜜桃av抽搐高潮一区二区 | 无码人妻久久一区二区三区不卡 | a在线观看免费网站大全 | 蜜臀aⅴ国产精品久久久国产老师 | 久久久久se色偷偷亚洲精品av | 西西人体www44rt大胆高清 | 成人欧美一区二区三区黑人免费 | 国产成人无码av一区二区 | 国产手机在线αⅴ片无码观看 | 中文字幕乱码人妻无码久久 | 欧美日本精品一区二区三区 | 麻豆av传媒蜜桃天美传媒 | 色综合久久网 | 午夜福利一区二区三区在线观看 | 中文字幕+乱码+中文字幕一区 | 色婷婷av一区二区三区之红樱桃 | 精品无码国产自产拍在线观看蜜 | 天下第一社区视频www日本 | 亚洲色偷偷男人的天堂 | 婷婷五月综合缴情在线视频 | 毛片内射-百度 | 日本在线高清不卡免费播放 | 国产精品久久久 | 日产国产精品亚洲系列 | 四虎国产精品一区二区 | 亚洲小说图区综合在线 | 亚洲爆乳大丰满无码专区 | 内射爽无广熟女亚洲 | 色五月丁香五月综合五月 | 亚洲中文字幕va福利 | 精品国产成人一区二区三区 | 国产av久久久久精东av | 成 人 网 站国产免费观看 | 欧美人与禽猛交狂配 | 无码精品人妻一区二区三区av | 国产人妻精品一区二区三区不卡 | 荫蒂被男人添的好舒服爽免费视频 | 久久国产精品萌白酱免费 | 曰韩少妇内射免费播放 | 又粗又大又硬毛片免费看 | 久久久久se色偷偷亚洲精品av | 久久无码专区国产精品s | 精品夜夜澡人妻无码av蜜桃 | 在线欧美精品一区二区三区 | 亚洲国产精品成人久久蜜臀 | 亚洲国产精品久久久天堂 | 日韩人妻少妇一区二区三区 | 国产乱码精品一品二品 | 99久久人妻精品免费二区 | 欧美老人巨大xxxx做受 | 1000部夫妻午夜免费 | 亚洲狠狠婷婷综合久久 | 一本久道久久综合狠狠爱 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 亚洲精品一区二区三区婷婷月 | 日韩人妻系列无码专区 | 少妇人妻偷人精品无码视频 | 亚洲成在人网站无码天堂 | 精品无码成人片一区二区98 | 狠狠色色综合网站 | 国产成人无码区免费内射一片色欲 | 欧美激情内射喷水高潮 | 又大又黄又粗又爽的免费视频 | 无码av最新清无码专区吞精 | 亚洲人成网站色7799 | 无码国产乱人伦偷精品视频 | 欧美性黑人极品hd | 熟女少妇人妻中文字幕 | 国产熟妇高潮叫床视频播放 | 国产真实乱对白精彩久久 | 最新国产乱人伦偷精品免费网站 | 久久无码中文字幕免费影院蜜桃 | aa片在线观看视频在线播放 | 亚洲熟妇色xxxxx欧美老妇y | 夜先锋av资源网站 | 久久久国产精品无码免费专区 | 国产精品va在线观看无码 | 国产69精品久久久久app下载 | 成人精品视频一区二区 | 免费无码肉片在线观看 | 亚洲 激情 小说 另类 欧美 | 精品国精品国产自在久国产87 | 乱人伦中文视频在线观看 | 蜜桃av抽搐高潮一区二区 | 日本一区二区更新不卡 | 青草青草久热国产精品 | 无码播放一区二区三区 | 麻豆md0077饥渴少妇 | 在线 国产 欧美 亚洲 天堂 | 久久久精品人妻久久影视 | 性啪啪chinese东北女人 | 中文字幕日韩精品一区二区三区 | 麻豆国产丝袜白领秘书在线观看 | 中文字幕无码热在线视频 | 亚洲中文无码av永久不收费 | 日日麻批免费40分钟无码 | 久久国产精品二国产精品 | 国产精品成人av在线观看 | 天天拍夜夜添久久精品 | 人妻体内射精一区二区三四 | 午夜嘿嘿嘿影院 | 四虎永久在线精品免费网址 | 人妻少妇被猛烈进入中文字幕 | 国产又粗又硬又大爽黄老大爷视 | 国产超级va在线观看视频 | 久久国产劲爆∧v内射 | 久精品国产欧美亚洲色aⅴ大片 | av在线亚洲欧洲日产一区二区 | 成人欧美一区二区三区黑人免费 | 精品厕所偷拍各类美女tp嘘嘘 | 欧美人与禽猛交狂配 | 荫蒂添的好舒服视频囗交 | 国产黄在线观看免费观看不卡 | 国产精品亚洲一区二区三区喷水 | yw尤物av无码国产在线观看 | 国产精品-区区久久久狼 | 熟女少妇在线视频播放 | 性生交大片免费看女人按摩摩 | 色综合久久久久综合一本到桃花网 | 精品亚洲成av人在线观看 | 久久午夜无码鲁丝片秋霞 | 无码人妻丰满熟妇区毛片18 | 人妻有码中文字幕在线 | 国产成人无码区免费内射一片色欲 | 国产成人精品一区二区在线小狼 | 成人试看120秒体验区 | 99久久久国产精品无码免费 | 成人无码视频免费播放 | 久久亚洲中文字幕精品一区 | 欧美老熟妇乱xxxxx | 国产精品第一国产精品 | 久久综合网欧美色妞网 | 伊在人天堂亚洲香蕉精品区 | 欧美一区二区三区 | 在线 国产 欧美 亚洲 天堂 | 国产人妻精品午夜福利免费 | 国产偷自视频区视频 | 成在人线av无码免观看麻豆 | 中文字幕无线码免费人妻 | 亚洲熟熟妇xxxx | 国产乱人伦偷精品视频 | 国产另类ts人妖一区二区 | 久久精品国产大片免费观看 | 久久久精品456亚洲影院 | a在线观看免费网站大全 | 在教室伦流澡到高潮hnp视频 | 久久久精品欧美一区二区免费 | 国色天香社区在线视频 | 欧美精品无码一区二区三区 | 国产乱人无码伦av在线a | 人妻中文无码久热丝袜 | 欧美午夜特黄aaaaaa片 | 欧美人与动性行为视频 | 色综合久久久无码中文字幕 | 真人与拘做受免费视频一 | 国产人妻精品一区二区三区不卡 | 四虎影视成人永久免费观看视频 | 精品少妇爆乳无码av无码专区 | 国产xxx69麻豆国语对白 | 久久伊人色av天堂九九小黄鸭 | 国产偷国产偷精品高清尤物 | 亚洲成熟女人毛毛耸耸多 | 黑人大群体交免费视频 | 成人免费视频视频在线观看 免费 | 国产成人无码一二三区视频 | 四虎4hu永久免费 | 亚洲成av人片在线观看无码不卡 | 欧美日韩综合一区二区三区 | 无遮挡国产高潮视频免费观看 | 日日鲁鲁鲁夜夜爽爽狠狠 | 精品人妻中文字幕有码在线 | 久青草影院在线观看国产 | 亚洲另类伦春色综合小说 | 久久国产自偷自偷免费一区调 | 免费人成在线观看网站 | 久久国产精品_国产精品 | 亚洲色在线无码国产精品不卡 | 性史性农村dvd毛片 | 18无码粉嫩小泬无套在线观看 | 久久 国产 尿 小便 嘘嘘 | 欧美 日韩 人妻 高清 中文 | 荡女精品导航 | 欧美大屁股xxxxhd黑色 | 六月丁香婷婷色狠狠久久 | 国产成人精品一区二区在线小狼 | 国产午夜亚洲精品不卡下载 | 国产激情无码一区二区 | 亚洲国产精品无码一区二区三区 | 国精产品一品二品国精品69xx | 欧美zoozzooz性欧美 | 亚洲精品久久久久中文第一幕 | 国产偷抇久久精品a片69 | 香港三级日本三级妇三级 | 在线播放亚洲第一字幕 | 亚洲热妇无码av在线播放 | 欧美国产日韩久久mv | 亚洲熟妇色xxxxx欧美老妇y | 欧美刺激性大交 | 精品乱子伦一区二区三区 | 综合人妻久久一区二区精品 | 性开放的女人aaa片 | 亚洲国产日韩a在线播放 | 午夜嘿嘿嘿影院 | 国产精品久久久久久久影院 | 2019午夜福利不卡片在线 | 精品少妇爆乳无码av无码专区 | 99久久精品午夜一区二区 | 成人精品天堂一区二区三区 | 亚洲国产综合无码一区 | 中文字幕乱码人妻无码久久 | 撕开奶罩揉吮奶头视频 | 永久黄网站色视频免费直播 | 免费无码的av片在线观看 | www国产亚洲精品久久久日本 | 亚洲七七久久桃花影院 | 亚洲精品成a人在线观看 | 四虎4hu永久免费 | 欧美午夜特黄aaaaaa片 | 国产熟女一区二区三区四区五区 | 无码av免费一区二区三区试看 | 午夜精品一区二区三区的区别 | 丰满少妇人妻久久久久久 | 成人试看120秒体验区 | 玩弄少妇高潮ⅹxxxyw | 国产成人无码专区 | 国产亚洲欧美在线专区 | 色老头在线一区二区三区 | 国产亚洲精品久久久久久国模美 | 亚洲色大成网站www | 中文字幕无码乱人伦 | 熟妇人妻无乱码中文字幕 | 久久精品女人的天堂av | 国产精品无码成人午夜电影 | 人人妻人人澡人人爽欧美一区 | 荫蒂被男人添的好舒服爽免费视频 | 免费国产黄网站在线观看 | 欧美日本免费一区二区三区 | 色欲综合久久中文字幕网 | 久久久精品456亚洲影院 | 久久久婷婷五月亚洲97号色 | 免费无码的av片在线观看 | 欧美性黑人极品hd | 亚洲爆乳大丰满无码专区 | 国产成人人人97超碰超爽8 | 久久综合给久久狠狠97色 | 无码中文字幕色专区 | 婷婷色婷婷开心五月四房播播 | 国产精品久久久久久久影院 | 精品少妇爆乳无码av无码专区 | 撕开奶罩揉吮奶头视频 | 精品久久久无码人妻字幂 | 性开放的女人aaa片 | 久久久www成人免费毛片 | 天天做天天爱天天爽综合网 | 久久久久亚洲精品中文字幕 | 精品夜夜澡人妻无码av蜜桃 | 久久无码中文字幕免费影院蜜桃 | 成熟女人特级毛片www免费 | 国产猛烈高潮尖叫视频免费 | 久久精品国产大片免费观看 | 成人免费视频在线观看 | 人妻无码αv中文字幕久久琪琪布 | 一本久道高清无码视频 | 无码人妻久久一区二区三区不卡 | 丰满人妻一区二区三区免费视频 | 在教室伦流澡到高潮hnp视频 | 国产精品美女久久久 | 国产午夜亚洲精品不卡 | 国产成人久久精品流白浆 | 色婷婷av一区二区三区之红樱桃 | 国产成人久久精品流白浆 | a片在线免费观看 | 精品国产麻豆免费人成网站 | 无码av岛国片在线播放 | 精品国产乱码久久久久乱码 | 亚洲欧洲日本综合aⅴ在线 | 精品无人区无码乱码毛片国产 | 九九久久精品国产免费看小说 | 十八禁真人啪啪免费网站 | 久久午夜无码鲁丝片秋霞 | 人妻少妇被猛烈进入中文字幕 | 国产一区二区三区精品视频 | 日本在线高清不卡免费播放 | 夜夜夜高潮夜夜爽夜夜爰爰 | 丰满护士巨好爽好大乳 | 精品国产一区二区三区四区在线看 | 蜜桃臀无码内射一区二区三区 | 天堂无码人妻精品一区二区三区 | 狠狠色噜噜狠狠狠狠7777米奇 | 天天做天天爱天天爽综合网 | 四虎影视成人永久免费观看视频 | 国产三级久久久精品麻豆三级 | 国产综合色产在线精品 | 日本精品久久久久中文字幕 | 日本精品人妻无码77777 天堂一区人妻无码 | 精品乱子伦一区二区三区 | 国产麻豆精品一区二区三区v视界 | 国产精品国产三级国产专播 | 美女毛片一区二区三区四区 | 欧美性生交活xxxxxdddd | 成人无码视频在线观看网站 | 夜夜影院未满十八勿进 | 亚洲精品国偷拍自产在线麻豆 | 牲欲强的熟妇农村老妇女视频 | 日日碰狠狠躁久久躁蜜桃 | aⅴ亚洲 日韩 色 图网站 播放 | 欧美 日韩 亚洲 在线 | 成人试看120秒体验区 | 成 人影片 免费观看 | 少妇厨房愉情理9仑片视频 | 中文字幕无码日韩欧毛 | 在线观看国产午夜福利片 | 亚洲一区二区三区偷拍女厕 | 国产性生大片免费观看性 | 性欧美熟妇videofreesex | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲国产av精品一区二区蜜芽 | 国产精品无码永久免费888 | 久久97精品久久久久久久不卡 | 国产又爽又猛又粗的视频a片 | 少妇性荡欲午夜性开放视频剧场 | 亚洲精品综合五月久久小说 | 无遮挡国产高潮视频免费观看 | 香港三级日本三级妇三级 | 色婷婷香蕉在线一区二区 | 99久久婷婷国产综合精品青草免费 | 国产熟妇另类久久久久 | 色综合久久久久综合一本到桃花网 | 亚洲精品一区国产 | 欧美老熟妇乱xxxxx | 国产精品永久免费视频 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 中文字幕乱码人妻二区三区 | 国产色xx群视频射精 | 久久亚洲精品中文字幕无男同 | 国产性生大片免费观看性 | 亚洲 a v无 码免 费 成 人 a v | 国产区女主播在线观看 | 国产无av码在线观看 | 成熟妇人a片免费看网站 | a在线观看免费网站大全 | 无遮无挡爽爽免费视频 | 伊人久久大香线蕉午夜 | 中文字幕无码av激情不卡 | 伊人色综合久久天天小片 | 国产九九九九九九九a片 | 国产女主播喷水视频在线观看 | 中文字幕无线码 | 扒开双腿疯狂进出爽爽爽视频 | 欧美喷潮久久久xxxxx | 亚洲人成影院在线观看 | 国产无遮挡又黄又爽免费视频 | 国产真实伦对白全集 | 亚洲成熟女人毛毛耸耸多 | 精品国产一区二区三区四区在线看 | 久久人人97超碰a片精品 | 中文亚洲成a人片在线观看 | 最近中文2019字幕第二页 | 国产人妻精品午夜福利免费 | 午夜福利不卡在线视频 | 亚洲中文字幕在线无码一区二区 | 亚洲天堂2017无码 | 鲁一鲁av2019在线 | 装睡被陌生人摸出水好爽 | 亚洲欧洲日本无在线码 | 精品国产乱码久久久久乱码 | 99视频精品全部免费免费观看 | 久久久www成人免费毛片 | 日本精品人妻无码免费大全 | 国产午夜亚洲精品不卡下载 | 鲁鲁鲁爽爽爽在线视频观看 | 亚洲国产午夜精品理论片 | 国产在热线精品视频 | 国产无遮挡吃胸膜奶免费看 | 俺去俺来也在线www色官网 | 又粗又大又硬又长又爽 | 亚洲国产精品成人久久蜜臀 | 精品久久8x国产免费观看 | 亚洲自偷自拍另类第1页 | 欧美变态另类xxxx | 在线精品亚洲一区二区 | 国产三级精品三级男人的天堂 | 国产又爽又猛又粗的视频a片 | 无码精品国产va在线观看dvd | 偷窥日本少妇撒尿chinese | 一二三四社区在线中文视频 | 女人色极品影院 | 亚洲精品国偷拍自产在线观看蜜桃 | 强辱丰满人妻hd中文字幕 | 久久综合网欧美色妞网 | 免费国产成人高清在线观看网站 | 国产精品成人av在线观看 | 丰满人妻被黑人猛烈进入 | 久久久久久亚洲精品a片成人 | 国产精品福利视频导航 | 精品国产一区av天美传媒 | 精品夜夜澡人妻无码av蜜桃 | 国产精品无码mv在线观看 | 精品人妻中文字幕有码在线 | 亚洲国产精品毛片av不卡在线 | 波多野结衣高清一区二区三区 | 亚洲精品无码国产 | 国内精品九九久久久精品 | 国产精品资源一区二区 | 久久久婷婷五月亚洲97号色 | 日韩av无码中文无码电影 | 无码国产色欲xxxxx视频 | www国产精品内射老师 | 亚洲熟女一区二区三区 | av香港经典三级级 在线 | 久久精品成人欧美大片 | 国内精品一区二区三区不卡 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲精品国产精品乱码视色 | 丝袜人妻一区二区三区 |