Shell-if条件判断 实例


title: Shell-if条件判断 实例
date: 2020-04-29 21:05:25
categories:

  • Shell
    tags:
  • if

例子1:检查网络是否正常后,自动安装httpd服务

#!/bin/bash
# auto install apache
# v1.1 by zjz 2019.10.30
# v1.2 by zjz 2020.04.29
#route 命令需提前安装net-tools
#gataway=`route -n | grep UG | awk '{print $2}'` #得出他的网关
gateway=`routel | sed -n '2p' | awk -F' ' '{print $2}'`

ping -c1 wwww.baidu.com &>/dev/null  #测试网络是否正常

if [ $? -eq 0  ];then  #当ping通百度, 0=0时开始安装
        yum install -y httpd
        systemctl restart httpd
        systemctl enable httpd
        #判断防火墙是否开启
        ps -aux | grep firewalld | grep -v 'color' &> /dev/null
        if [ $? -eq 0 ];then
            firewall-cmd --permanent --add-service=http
            firewall-cmd --permanent --add-service=https
            firewall-cmd --reload
            echo "Firewalld strategy alread update"
        else
            echo "Firewalld not running"
        fi
        
        #判断selinux是否开启
        getenforce | grep enfor
        if [ $? -eq 0 ];then
            sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
            setenforce 0
        else
            echo "SELinux not running"
        fi
        #curl http://127.0.0.1
elif    ping -c1 $gataway &>/dev/null;then  #ping网关,若是通,可能就是dns问题
        echo "check DNS"
else
        echo "检查IP配置是否正常"   #如果都排查不了就手动检查网络配置
        exit
fi

例子2.判断当前内核主版本是否为3,且次版本是否大于10

#!/bin/bash
#Kernel check
#v1.0 by zjz 2019-10-30

main_version=`uname -r | awk -F "." '{print $1}'`
order_version=`uname -r | awk -F "." '{print $2}'`

if [ $main_version -eq 3 ];then
        echo "当前的内核主版本为:$main_version"
fi

if [ $order_version -ge 10 ];then
        echo "此版本内核为:$order_version,不大于10"
fi

例子3.判断:如果vsftpd启动,输出以下信息:

vsftpd服务器已启动.…I
vsftpd监听的地址是:
vsftpd监听的端口是:
vsftpd的进程PID是:

#!/bin/bash
#判断vsftpd状态
#v1.0 by zjz
ip=192.168.0.109
rpm -q vsftpd >>/dev/null
if [ $? -ne 0 ];then
   echo "vsftpd 未安装"
   yum install vsftpd
fi

   systemctl restart vsftpd
   ss -tnlp | grep "vsftpd" >>/dev/null
if [ $? -eq 0  ];then
   vsftpd_address=$ip
   vsftpd_port=`ss -tnlp | grep "vsftpd" | awk '{print $4}' | awk -F ":" '{print $4}'`
   vsftpd_pid=`systemctl status vsftpd  |grep 'Main PID' | awk '{print $3}'`
   echo "vsftpd服务器已启动"
   echo "vsftpd_IP地址为$vsftpd_address"
   echo "vsftpd服务器端口为$vsftpd_port"
   echo "vsftpd服务进程PID为$vsftpd_pid"

else
   echo "vsftpd服务器未启动"
fi

例子4.判断用户输入的是否是数字

#!/bin/bash
#判断输入的是否是数字
#v1.1 by zjz 2019-10-30

read -p "请输入字符:" num

if [[ "$num" =~ ^[0-9]+$ ]];then
  echo "你输入的是数字"
else
  echo "你输入的不是数字"
fi

更多更好的原创文章,请访问官方网站: 点我就能跳转咯-》https://nothingzh.gitee.io
也可关注“哎呦运维”微信订阅号,随时接受文章推送。

你可能感兴趣的:(Shell编程,Linux)