• 工作中编写的一些小脚本


    #批量处理域名访问时间
    while read line
    do
    ping -c 3 $line|tail -1  |awk -F "/" '{print $5}'>> result/"$line"_result.txt&
    done < wenzhou_domain.txt
    sleep 1m
    
    while read domain
    do
    a=`cat result/"$domain"_result.txt`
    if [ "$a" = "" ];then
    echo unknow >>result.txt
    else
    echo $a    >>result.txt
    fi
    done <wenzhou_domain.txt
    #批量处理域名状态码
    #!/bin/bash
    Thread=100
    CurFileName="domain.txt"
    FifoFile="$.fifo"
    mkfifo $FifoFile
    exec 6<>$FifoFile
    rm $FifoFile
    for ((i=0;i<=$Thread;i++));do echo;done >&6
    exec 5<$CurFileName
    trap 'kill -9 0;exit 1' 1 2 3 15
    
    while read -u5 line
    do
            read -u6
            {
                    STATUS_CODE=$(curl -I -o /dev/null -s -w %{http_code} "$line")
                    echo -e "$STATUS_CODE" |tee -a code.txt
                    echo >&6
            } &
    done
    wait
    #批量dig取ip
    #!/bin/bash
    Thread=100
    CurFileName="domain.txt"
    FifoFile="$.fifo"
    mkfifo $FifoFile
    exec 6<>$FifoFile
    rm $FifoFile
    for ((i=0;i<=$Thread;i++));do echo;done >&6
    exec 5<$CurFileName
    trap 'kill -9 0;exit 1' 1 2 3 15
    
    while read -u5 line
    do
            read -u6
            {
                    STATUS_CODE=$(dig "$line" A +noall +answer |tail -1|awk '{print $5}' )
                    echo -e "$line:	$STATUS_CODE" |tee -a code.txt
                    echo >&6
            } &
    done
    wait
    #批量查询端口
    1)
    #!/bin/bash
    Thread=100
    CurFileName="domain.txt"
    FifoFile="$.fifo"
    mkfifo $FifoFile
    exec 6<>$FifoFile
    rm $FifoFile
    for ((i=0;i<=$Thread;i++));do echo;done >&6
    exec 5<$CurFileName
    trap 'kill -9 0;exit 1' 1 2 3 15
    
    while read -u5 line
    do
            read -u6
            {
                    STATUS_CODE=$(nmap -p80,443 "$line" | grep open  )
                    echo -e  "$line
    $STATUS_CODE"|cut -d "/" -f1 |tee -a code.txt
                    echo >&6
            } &
    done
    wait
    2)
    while read domain
    do
    nmap -sT $domain | grep open >> result/"$domain"_result.txt &
    done < domain.txt
    sleep 5m
    while read Domain
    do
            echo =========$Domain============ >>result.txt
            cat result/"$Domain"_result.txt >>result.txt
    done < domain.txt
    #监控web服务状态
    #!/bin/sh
    CheckUrl(){
    timeout=5
    fails=0
    success=0
    while true
    do
    	wget --timeout=$timeout --tries=1 http://blog.chinaunix.net/uid-23929712-id-2650421.html -q -O /dev/null
    	if [ $? -ne 0 ]
    		then
    		let fails=fails+1
    		else
    		let success=success+1
    	fi	
    	if [ $success -ge 1 ]
    		then
    		echo success
    		Critical="sys is up."
    		echo $Critical|tee|mail -s "$Critical" hejianlai@dnion.com
    		exit 0
    	fi
    	if [ $fails -ge 2 ]
    		then
    		Critical="sys is down."
    		echo $Critical|tee|mail -s "$Critical" hejianlai@dnion.com
    		exit 2
    	fi
    	done
    	
    }
    CheckUrl
    #判断系统内存大小
    #/bin/sh
    FreeMem=`free -m|awk 'NR==3 {print $NF}'`
    CHARS="Current memory is $FreeMem"
    if [ $FreeMem -lt 100 ]
    then
    	echo $CHARS|tee /tmp/messages.txt
    		mail -s "`date +%F-%T`$CHARS" hejianlai@dnion </tmp/messages.txt
    fi
    #DDos攻击
    #!/bin/sh
    file=$1
    while true
    do
            awk '{print $1}' $1|grep -v "^$"|sort|uniq -c >/tmp/tmp.log
            exec </tmp/tmp.log
            while read line
            do
            ip=`echo $line|awk '{print $2}'`
            count=`echo $line|awk '{print $1}'`
            if [ $count -gt 500 ] && [ `iptables -L -n|grep "$ip"|wc -l` -lt 1 ]
            then
            iptables -I INPUT -s $ip -j DROP
            echo "$line is dropped" >>/tmp/droplist_$(date +%F).log
            fi
            done
    sleep 1m
    done
    #去重输出到原文件
    #! /bin/bash
    while read gsa
    do
    {
    while read yijiazai
    do
    if [ $gsa = $yijiazai ]; then
    echo $gsa >>chongfu_domain.txt
    sed -i "/$gsa/d" vaas.txt
    #sed -i "/$gsa/d" yijiazai_domain.txt
    fi
    done < bukejia_domain.txt
    }
    done < vaas.txt
    #去重输出到新文件
    #! /bin/bash
    while read https_d
    do
    {
    while read diyipi_d
    do
    if [ $https_d = $diyipi_d ]; then
    echo $https_d >>quchong_and_newfile.txt
    sed -i "/$https_d/d" diyipi_domain.txt
    fi
    done < diyipi_domain.txt
    }
    done < https.txt
    #过滤相同
    #! /bin/bash
    while read zuihouyipi
    do
    {
    while read wangsu666_d
    do
    if [ $wangsu666_d = $zuihouyipi ]; then
    echo $wangsu666_d >> qieheidomain.txt
    fi
    done < wangsu666domain.txt
    }
    done < 161domain.txt
    #批量取出对应域名url
    #!/bin/sh
    while read line
    do
            cat access.log*|awk '{print $5,$8}'|grep 200|awk '{print $2}'|grep $line|sort -R|head -2 >>rulse.txt 
    
    done < domain.txt 
    判断mysql服务是否开启的方法:
    #!/bin/sh
    echo method1-------------------
    if [ `netstat -lnt|grep 3306|awk -F "[ :]+" '{print $5}'` -eq 3306 ]
    then
        echo "MySQL is Running."
    else
        echo "MySQL is Stopped."
        /etc/init.d/mysqld start
    fi
    echo method2-------------------
    if [ "`netstat -lnt|grep 3306|awk -F "[ :]+" '{print $5}'`" = "3306" ]
    then
        echo "MySQL is Running."
    else
        echo "MySQL is Stopped."
        /etc/init.d/mysqld start
    fi
     
    echo method3-------------------
    if [ `netstat -lntup|grep mysqld|wc -l` -gt 0 ]
    then
        echo "MySQL is Running."
    else
        echo "MySQL is Stopped."
        /etc/init.d/mysqld start
    fi
    echo method4-------------------
    if [ `lsof -i tcp:3306|wc -l` -gt 0 ]
    then
        echo "MySQL is Running."
    else
        echo "MySQL is Stopped."
        /etc/init.d/mysqld start
    fi
    echo method5-------------------
    [ `rpm -qa nmap|wc -l` -lt 1 ] && yum install nmap -y &>/dev/null
    if [ `nmap 127.0.0.1 -p 3306 2>/dev/null|grep open|wc -l` -gt 0 ]
      then
        echo "MySQL is Running."
    else
        echo "MySQL is Stopped."
        /etc/init.d/mysqld start
    fi
    echo method6-------------------
    [ `rpm -qa nc|wc -l` -lt 1 ] && yum install nc -y &>/dev/null
    if [ `nc -w 2  127.0.0.1 3306 &>/dev/null&&echo ok|grep ok|wc -l` -gt 0 ]
      then
        echo "MySQL is Running."
    else
        echo "MySQL is Stopped."
        /etc/init.d/mysqld start
    fi
    echo method7-------------------
    if [ `ps -ef|grep -v grep|grep mysql|wc -l` -ge 1 ]
      then
        echo "MySQL is Running."
    else
        echo "MySQL is Stopped."
        /etc/init.d/mysqld start
    fi
    判断http服务是否开启的方法:
    #!/bin/sh
    echo http method1-------------------
    if [ `netstat -lnt|grep 80|awk -F "[ :]+" '{print $5}'` -eq 80 ]
      then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /etc/init.d/nginx start
    fi
    echo http method2-------------------
    if [ "`netstat -lnt|grep 80|awk -F "[ :]+" '{print $5}'`" = "80" ]
      then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /etc/init.d/nginx start
    fi
     
     
     
    echo http method3-------------------
    if [ `netstat -lntup|grep nginx|wc -l` -gt 0 ]
      then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /etc/init.d/nginx start
    fi
    echo http method4-------------------
    if [ `lsof -i tcp:80|wc -l` -gt 0 ]
      then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /etc/init.d/nginx start
    fi
    echo http method5-------------------
    [ `rpm -qa nmap|wc -l` -lt 1 ] && yum install nmap -y &>/dev/null
    if [ `nmap 127.0.0.1 -p 80 2>/dev/null|grep open|wc -l` -gt 0 ]
      then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /etc/init.d/nginx start
    fi
    echo http method6-------------------
    [ `rpm -qa nc|wc -l` -lt 1 ] && yum install nc -y &>/dev/null
    if [ `nc -w 2  127.0.0.1 80 &>/dev/null&&echo ok|grep ok|wc -l` -gt 0 ]
      then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /etc/init.d/nginx start
    fi
    echo http method7-------------------
    if [ `ps -ef|grep -v grep|grep nginx|wc -l` -ge 1 ]
      then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /etc/init.d/nginx start
    fi
     
    echo http method8-------------------
    if [[ `curl -I -s -o /dev/null -w "%{http_code}
    " http://127.0.0.1` =~ [23]0[012] ]]
      then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /etc/init.d/nginx start
    fi
     
     
    echo http method9-------------------
    if [ `curl -I http://127.0.0.1 2>/dev/null|head -1|egrep "200|302|301"|wc -l` -eq 1  ]
      then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /etc/init.d/nginx start
    fi
    echo http method10-------------------
    if [ "`curl -s http://127.0.0.1`" = "oldboy"  ]
      then
        echo "Nginx is Running."
    else
        echo "Nginx is Stopped."
        /etc/init.d/nginx start
    fi
     
    ssh服务开启,关闭脚本
    #!/bin/sh
    path=/etc/init.d/sshd
    if [ $# -ne 1 ]
            then
            echo $"usage:$0{start|stop|resatrt}"
            exit 1
    fi
    if [ "$1" = "start" ]
            then
            $path start
            if [ `netstat -lntup|grep sshd|wc -l` -ge 1 ]
            then
            echo "sshd is started"
            exit 0
            fi
    elif [ "$1" = "stop" ]
            then
            $path  stop
            if [ `netstat -lntup|grep sshd|wc -l` -eq 0 ]
            then
            echo "sshd is stop"
            exit 0
            fi
    elif [ "$1" = "restart" ]
            then
            $path  stop
            sleep 2
            $path  start 
             if [ `netstat -lntup|grep sshd|wc -l` -ge 1 ]
            then
            echo "sshd is restarted"
            else
            echo echo $"usage:$0{start|stop|resatrt}"
            exit 1
             fi
    fi
    安装lamp,lnmp脚本
    #!/bin/sh
    path=/root/scripts
    [ ! -d "$path" ]&& mkdir $path
    cat <<EOF
            1.[install lamp]
            2.[install lnmp]
            3.[exit]
            pls input the num you want:
    EOF
    read num
    [ $num -eq 1 ]&&{
            echo "start installing lamp."
            sleep 2
            [ -x "$path/lamp.sh" ]||{
            echo "$path/lamp.sh does not exist or can be exec"
            exit 1
    }
            $path/lamp.sh
            exit $?
    }
    [ $num -eq 2 ]&&{
            echo "start installing lnmp."
            sleep 2
            [ -x "$path/lnmp.sh" ]||{
            echo "$path/lnmp.sh does not exist or can be exec"
            exit 1
    }             
            $path/lnmp.sh
            exit $?
    }
    [ $num -eq 3 ]&&{
            echo bye
            exit 3
    }
    [ ! $num -eq 1 -o ! $num -eq 2 -o ! $num -eq 3 ]&&{
            echo "the num you input must be{1|2|3}"
            echo "Input ERROR"
            exit 4
    }
    
    跳板机自动输入密码查看
    #!/bin/expect
    spawn ssh root@192.168.160.133 uptime
    expect "*password"
    send "123
    "
    expect eof
    
    批量生成随机字符文件名
    #!/bin/sh
    Path=/oldboy
    [ -d "$Path" ]||mkir -p $Path
    for n in `seq 10`
    do
            random=`openssl rand -base64 40|sed 's#[^a-z]##g'|cut -c 2-8`
            touch $Path/${random}_oldboy.html
    done
    
    防止恶意破解root账户的脚本
    #!/bin/sh
    cat /var/log/secure | awk '/Failed/{print $(NF-3)}' |sort|uniq -c|awk
    '{print $2"="$1}' >>/root/black.txt
    DENY=50
    for i in $(cat /root/black.txt)
    do
            IP=$($i| awk -F'=' '{print $1}')
            NUM=$($i| awk -F'=' '{print $2}')
            if [ $NUM -gt $DENY ];then
            grep $IP /etc/hosts.deny > /dev/null
            if [ $? -gt 0 ];then
            echo "ssh:$IP" >> /etc/hosts.deny
            fi
            fi
    done
    #执行shell脚本获取oracle数据库信息
    #!/bin/bash
    source ~/.bash_profile
    get_info (){
    sqlplus user/password <<EOF
    --注册总人数
    select count(*) from api_real_name_authentication where ARNA_SUBMITTIME >= '20181026';
    --过闸总通行次数
    select count(*) from api_entry_flow where AEF_ENTRYTIME >= '20181026' and AEF_LINENO<>'1';
    --万胜围
    select count(*) from api_entry_flow where AEF_ENTRYTIME >= '20181026' and AEF_LINENO='4';
    --珠江新城
    select count (*) from api_entry_flow where AEF_ENTRYTIME >= '20181026' and AEF_LINENO='3';
    --嘉禾望岗
    select count(*) from api_entry_flow where AEF_ENTRYTIME >= '20181026' and AEF_LINENO='2';
    EOF
    }
    get_info|grep COUNT -A 3 >result.txt
    a=`cat result.txt|sed -n '3p'|sed s/[[:space:]]//g`
    b=`cat result.txt|sed -n '8p'|sed s/[[:space:]]//g`
    c=`cat result.txt|sed -n '13p'|sed s/[[:space:]]//g`
    d=`cat result.txt|sed -n '18p'|sed s/[[:space:]]//g`
    e=`cat result.txt|sed -n '23p'|sed s/[[:space:]]//g`
    echo "
    智慧安检总注册用户数:${a}
    过闸总通行次数:${b}
    万胜围:${c}
    珠江新城:${d}
    嘉禾望岗:${e}
    " >zhihuianjian.txt
    
  • 相关阅读:
    Gates entitled as knight
    the next generation Office
    Beautiful songs
    一则比较搞笑的新闻:【人才】微软招募英才 机会不容错过
    About cmt lint tools
    Alpha's blog open !
    抱歉!
    新闻:IBM的新工具CHIPHOPPER! 一套能够极大扩展Linux应用范围的新工具、新资源和新软件
    读书笔记:Thinking in Java (一)
    The best coders are:/什么是最牛的程序员
  • 原文地址:https://www.cnblogs.com/Dev0ps/p/7835143.html
Copyright © 2020-2023  润新知