2014-10-14 shell脚本练习题

回复 收藏
上一个脚本其实并不难,只要把你做过的操作整理一遍,把该有的命令写到脚本里就可以了。为什么大家都不去动手?其实厉害的大牛和普通人的区别就在于此,大牛一开始也是小白,但是他们努力,有目标,会动手去写。不要找借口说不会,那我问你,lamp你搭建成功了吗?如果搭建成功了就可以写出那个脚本来!

今天的shell练习题:写一个脚本判断你的Linux服务器里是否开启web服务?(监听80端口)如果开启了,请判断出跑的是什么服务,是httpd呢还是nginx又或者是其他的什么? (本来还想再加一个需求,我看还是算了,不然你们又不动手了。)
2014-10-14 17:25 举报
已邀请:
0

ocean

赞同来自:

# cat 1014.sh
#!/bin/bash
# Desc : this script is to check web app services
# Writen by Jeffery.Su
# Date:  Oct,14 2014

PORT=80
SERVICE=$(netstat  -ntlp | grep :$PORT| awk -F"/" '{print $2}'|uniq)
if [ -z $SERVICE ];then
     echo "System  web app is not runing "
else
     echo "System current web app is $SERVICE"
fi
上回的没写  这回占个沙发吧 {:5_121:}

0

Louis

赞同来自:

  1. #!/bin/bash
  2. ## This script is for judge if web service is on,and what service provides.
  3. ## Written by Louis at 2014/10/14 17:45

  4. if netstat -nlp|grep -v 'grep'|grep -q ':80'; then
  5.     web_pid=`netstat -nlp|grep ':80'|awk '{print $NF}'|awk -F/ '{print $1}'`
  6.     web_ser=`ps aux|grep -v 'grep'|grep $web_pid|awk '{print $11}'`
  7.     echo "web service is on,it's main progress is '$web_ser'"
  8. else
  9.     echo "web service is off."
  10. fi
思路:netstat -nlp查看80端口是否开启,如开启,则web服务已启动,然后通过该pid查看(ps aux)到底是哪个进程在运行;如未开启,则web服务未启动。

0

陈沛

赞同来自:

  1. #!/bin/bash
  2. # 2014-10-14
  3. # chenpei
  4. # Whether to start the web service and service type

  5. whether=`netstat -lnp | grep 80`
  6. if [ -z "$whether" ]; then
  7.     echo "not start service.";
  8.     exit;
  9. fi
  10. web_server=`echo $whether | awk -F'/' '{print $2}'`
  11. case $web_server in
  12.     httpd )     
  13.         echo "apache server."  
  14.     ;;      
  15.     nginx )      
  16.          echo "nginx server."  
  17.     ;;   
  18.     * )  
  19.          echo "other server."   
  20.     ;;   
  21. esac
0

So Long

赞同来自:

本帖最后由 程城 于 2014-10-14 22:48 编辑

#!/bin/bash
#find the service which listen the port of 80!

port=80
port_ifup=`netstat -lnp |grep -c $port`
if [ $port_ifup -ge  1 ];then
        echo "port of 80 is up!"
        services=`netstat -lnp |grep $port |awk '{print $7}'|sed 's#^.*/##g'|uniq`
        echo "$services  web services is running the port of 80 !"
else
        echo "Have no web services running to the port of 80 !"
fi

0

齐天大圣

赞同来自:

  1. #!/bin/bash
  2. #Check 80 on/off

  3. #yum -y install lsof >/dev/null 2>&1
  4. lsof -i:80 >/dev/null 2>&1
  5. [ `echo $?` -eq 0 ] && echo "web server is running!"
  6. web=`lsof -i:80 |awk '{print $1}' |grep -v 'COMMAND' |sort |uniq`
  7. [ ! -z $web ] && echo "The web server is $web"
0

jaws1689

赞同来自:

#!/bin/bash
#20141014练习题

for line in `netstat -lnp | grep :80 | awk '{printf $7}' | awk -F/ '{printf $NF}'`
do
   if [ -n $line ]
      then
        echo "WebServer has been started!"
        echo "ServerName:$line"
      else
        echo "Don't start WebServer!"
   fi
done
0

zyfeifie

赞同来自:

本帖最后由 zyfeifie 于 2014-10-16 11:08 编辑
  1. #/bin/bash
  2. name=`netstat -lntp | awk '$4~/:80$/ {print $NF}' | awk  -F '/' '{print $2}'
  3. if [ ! -z $name ];then
  4. echo "the web service is running."
  5. echo "the webservice is $name."
  6. else
  7. echo "the webservice is not runing"
  8. fi


0

陌懒

赞同来自:

本帖最后由 陌懒 于 2014-10-16 18:03 编辑
  1. #!/bin/bash

  2. test1=$(netstat -tuln|grep ":80")
  3. test2=$(netstat -tulnp|grep "httpd")

  4. if [ "$test1" != "" ];then

  5.         if [ "$test2" != "" ];then
  6.                 echo "The system is running http."
  7.         else
  8.                 echo "The system is running nginx."
  9.         fi

  10. else
  11.         echo "Web is not running in your system!"
  12. fi

0

游夜

赞同来自:

  1. #!/bin/bash
  2. service=`netstat -lnp |grep 80|awk -F '/' '{print $2}'`

  3. if [ "$service" == "" ]
  4. then
  5. echo "not web server runing!"
  6. elif [ "$service" == "httpd" ]
  7. then
  8. echo "httpd server runing!"
  9. elif [ "$service" == "nginx" ]
  10. then
  11. echo "nginx server runing!"
  12. else
  13. echo "$service server runing!"
  14. fi
0

soar

赞同来自:

本帖最后由 soar 于 2014-10-17 12:01 编辑

#!/bin/bash
web=`netstat -lnpt | grep 80`
if [ "$web" != "" ]
then
        echo "the web server is running"
else
        echo "the web server is not running"
fi
#判断开启的是httpd 还是nginx
httpd=`/usr/bin/pgrep httpd`
nginx=`/usr/bin/pgrep nginx`
if [ "$httpd" != "" ]
then
        echo "the running web server is httpd"
elif [ "$nginx" != "" ]
then
        echo "the runing web server is nginx"
else
        echo " the web server is not httpd or nginx"
fi
0

zq13054480665

赞同来自:

aaa
0

cmzsteven

赞同来自:

#!/bin/bash

n=`netstat -lnp|grep -w 80|awk -F '/' '{print $NF}'`
if [ $n == "" ]; then
    echo "Port 80 is not Listenning."
else
    echo "Port 80 is Listenning. The server is: $n"
fi
0

sss

赞同来自:

本帖最后由 sss 于 2015-6-1 14:12 编辑
  1. #!/bin/bash
  2. #Check web service type
  3. #2015/05/13

  4. web_ser=`netstat -nltp | grep '80' | awk '{print $NF}' | awk -F/ '{print $2}'`

  5. if [ -z "$web_ser" ]
  6. then
  7.         echo " web services is not runing "
  8. else
  9.         echo " $web_ser services  is running "
  10. fi


0

渐行渐远

赞同来自:

#!/bin/bash
web=`netstat -lnp | grep :80`
ser=`netstat -lnp | grep :80|awk -F "/" '{print $2}'`
if [ -z "$web" ];then
echo "80端口没被运行"
else
echo "现在正在运行的服务是$ser"
fi
0

ifconfig2

赞同来自:

1
0

翟厚翔

赞同来自:

#!/bin/bash
SERV=`netstat -lnp|grep -E ':80\>'`
SERV1=`netstat -lnp|grep -E ':80\>'|wc -l`
if [ $SERV1 -eq 0 ];then
  echo "80 port is not exits"
   exit 1
fi
SER=`echo  "$SERV" |awk -F'/' '{print $2}'|awk -F' ' '{print $1}'`
case  $SER in
httpd)
      echo "80 port is httpd service"
      ;;
nginx)
      echo "80 port is nginx service"
      ;;
     *)
     echo "80 port service is unknown"
      ;;
esac
0

hlymlv

赞同来自:

#!/bin/bash
n=`netstat -lnp|grep ':80'`
if [ -n "$n" ];then
f=`echo $n|awk '{print $NF}'|awk -F '/' '{print $2}'`
echo "$f is running."
else
echo "没有开启web服务"
fi
0

rolay8

赞同来自:


  1. #!/bin/bash

  2. read -p "please input a port to display program:" port
  3. result=`netstat -lntp|awk '{print $4}'|grep -w $port`

  4. if [ -z $result ]; then
  5.     echo "Not listening port!"
  6.     exit 0
  7. fi

  8. program=`netstat -lntp|awk 'NR>2 {print $4,$7}'|grep -w $port|cut -d '/' -f2`

  9. echo "The port $port is running $program!"
0

lyhabc

赞同来自:

#!/bin/bash
#write by 2016-2-2
check_webtype(){
if [ $1 == "nginx" ]
then
        echo "nginx is running "
elif [ $1 == "httpd" ]
then
        echo "httpd is running "
fi
}



n=$(netstat -lnp|grep -E ":80"|grep -v grep)
if [ ! -z "$n" ]
then
        nn=$(echo $n|awk '{print $7}'|awk -F "/" '{print $2}')
    check_webtype $nn
else
        echo "no web service is running "
fi
0

xteplinux

赞同来自:

{:4_91:}
0

kevinjin

赞同来自:

#! /bin/bash

web_status=`netstat -lnp |grep ':80' |awk '{print $6}'`
web_app=`netstat -lnp |grep ':80' |awk '{print $7}' |sed 's#^[0-9].*/##'`
if [ $web_status==LISTEN ]
then
    echo "port 80 is listening, and web is running by $web_app"
else
    echo "start web service"
fi
0

kw是id

赞同来自:

#!/bin/bash
a=`netstat -lnp |grep ':80'`
if [ -n "$a" ]
then
    b=`netstat -lnp |grep ':80' |awk '{print $NF}' |awk -F '/' '{print $2}'`
    echo "your web server is $b"
fi

0

王斌

赞同来自:

#! /bin/bash

# name: Cityzen wang

# check web nad service

server=`netstat -lnp |egrep ':80' | awk -F '/' '{print $2}'`

if [ -n "$server" ]

then

    echo "$server is running"

else

    echo "No Web service"

fi

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: