Aprendizaje con un patrón de notas LINUX -20

Sección 20: sentencia condicional y si el uso de
esta sección es la charla:
20.1 comandos de teclado de lectura para leer los valores de las variables
leídas comando es el parámetro más importante de entrada leer
parámetros importantes
-P: rápidos seguidos de los contenidos
leídos -p "Por favor, introduzca su nombre: "$ nombre
-t: seguido de un número, este número es superior al número de segundos no se introduce automáticamente la salida
leer -t 5 -p" por favor, introduzca su nombre: "$ nombre de
5 segundos sin entrada automáticamente a cabo
cuando no se muestra el contenido de entrada, la contraseña utilizada para: -S
Ejemplo 1:.
[@ las raíces de nodo-scripts 1.] CAT test-read.sh #
# / bin / bash!
Leer -p "Por favor, introduzca su nombre:" nombre de
Lee -p "Por favor, introduzca su edad:" eDAD

cat << EOF


Su información básica es la siguiente:
Nombre: $ NOMBRE
Edad: $ EDAD


EF

20,2 declaración si el control de flujo
sentencia de control de flujo si Sintaxis:
Si [Condición juzgar]
el entonces
comando
elif
comando
demás
comandos
fi
Descripción de importancia si introducir comparativo si antes de
comparar el valor de 2,1
eq: la igualdad
NQ: no son iguales
- GT: es mayor que
-lt: es menor que
-ge: no menos de un
-LE: si o menos
Ejemplo 2:
[. @ las raíces de nodo-scripts 1] test2.sh CAT #
#! / bin / bash
Leer -p "num2 num1 ENTRADA : "num1 num2
SI [-gt $ $ num1 num2]
el entonces
echo" $ num1> num2 $ "
elif [-LT- $ $ num1 num2]
el entonces
echo" num1 $ <$ num2 "
el otro
echo" $ num1 num2 $ = "
Fi
2.2 cadena de parámetro comúnmente usado
==: igual a la verdaderos
= :! cierto no es igual a
la -Z: verdadera longitud de la cadena es cero
Ejemplo 3:
[Root @ los guiones Nodo-1] # cat test3.sh
#! / Bin / bash
la Leer -p "al introducir su nombre:" Nombre del
SI [$ name == "raíz"]
el entonces
echo "usted es el Super Administrador"
el otro
echo " generales para el usuario a son por Ti "
Fi
parámetros comunes 2.3 documento se determina
-E: si existe el archivo
-f: si un archivo normal
-d: si la carpeta
-r: se puede leer
w: se puede escribir
-x: es ejecutable
ejemplo 4: vaciar el archivo de registro para retener las primeras 100 líneas
[root @ el nodo-1 guiones] clear-log.sh # CAT
# / bin / bash!
# si el usuario root
[$ user = "raíz"!] iF
al entonces
echo " la raíz debe ser! "
Salir 0
Fi
# determina si existe un archivo
if [! f / var / log / messages]
el entonces
echo" archivo no existe! "
eco 1
fi
cola -100 / var / log / messages> /var/log/mesg.tmp
rm -rf / var / log / messages
gato /var/log/mesg.tmp> / var / log / messages

Ejemplo 5
requisitos son los siguientes:
Creación de un script llamado /root/scripts/check.sh en el servidor, las siguientes funciones:
1) Cuando se ejecuta RedHat /root/check.sh, CentOS salida
2) cuando se ejecuta / root / cheque. centos sh, salida RedHat
3) cuando no hay parámetros o parámetro no es RedHat o CentOS, cuya salida produce el siguiente mensaje de error:.
| RedHat /root/scripts/check.sh CentOS
[. @ los ganglios de la raíz guiones 1] Comprobar CAT # .sh
#! / bin / bash
if [ "$ 1" == "RedHat"]
el entonces
echo "CentOS"
elif [ "$ 1" == "CentOS"]
el entonces
echo "RedHat"
el otro
echo "/ root / scripts / el cheque. RedHat SH | CentOS "
fi
resultados de las pruebas de ejecución
[root @ los guiones nodo-1] # SH check.sh RedHat
CentOS
[root @ los guiones nodo-1] # SH check.sh CentOS
RedHat
[root @ los guiones nodo-1] # SH del Registro .aa sh
RedHat /root/scripts/check.sh | CentOS
20.4 del proceso de control de flujo condiciones complejas y comodines
complejas condiciones:
condiciones -a && y con
-o y condiciones o ||
*: Partidos cero o más caracteres
: juego un personaje?

例6:
[root @ nodo-1 guiones] # cat / etc / profile | menos

SI [-gt el UID $ 199] && [ " /usr/bin/id -gn" = " /usr/bin/id -un"], la continuación
de la máscara de usuario 002
el otro
la máscara de usuario 022
Fi
20,5 combate - shell script varias uso diario real
de combate escenario 1:
Análisis de la utilización de la CPU de acogida
[root @ nodo-1 guiones] checkcpu.sh # cat

#! / Bin / bash
variables #environment
Fuente / etc / profile
uso #cpu
cpu_us = vmstat | awk '{print $13}' | sed -n '$p'
cpu_sy = vmstat | awk '{print $14}' | sed -n '$p'
la cpu_id = vmstat | awk '{print $15}' | sed -n '$p'
cpu_sum = $ (($ + $ cpu_us cpu_sy))
SI ((CPU $ SUM> = 90))
el entonces
MSG = "El tiempo : $ (FECHA% F. +
% T)
nombre de host: $ (nombre de host)
del IPADDR: $ (ifconfig | awk 'NR == $ 2} 2 {Imprimir')
del MSG: el uso de la CPU es demasiado alto ya gastó $ {cpu_sum}%! "
echo $ msg
fi
resultado de la ejecución
[root @ los guiones nodo-1] # SH checkcpu.sh
la época: 2020-04-02_23: 23: 17 Nombre de host: el nodo-1 IPADDR: 192.168.26.71 msg: el uso de la CPU es demasiado alto! He utilizado el 92%

guión actual 2:
determinar si el error de instalación para instalar la instalación vsftpd - Otros servicios ponen sus nombres cambiaron un poco
[root @ el Nodo-1 guiones] # cat chkvsftpd.sh
# / bin / bash!
rpm -qa | grep vsftpd y> / dev / null
SI [$? -ne 0]
el entonces
vsftpd y> / dev / null && echo "vsftpd Instalado suecess." yum -y install
SI [$? -eq 0]
el entonces
systemctl reiniciar vsftpd vsftpd && systemctl permitir que
la persona
echo "vsftpd insuficiencia instalar! "
fi
fi

El resultado:
[root @ el Nodo-1 guiones] chkvsftpd.sh # SH
"Vsftpd suecess instalado".
La /etc/systemd/system/multi-user.target.wants/vsftpd.service Creado a partir de enlace simbólico a / usr / lib / systemd /system/vsftpd.service.

guión real 3:
prueba de si una dirección IP especificada puede hacer ping
[root @ los guiones-1 Nodo] chkping.sh # CAT
# / usr / bin / bash!
la Leer -p "Por favor INPUT A ip:" ip
ping -c $ 3 IP y} {> / dev / null
SI [$? -eq 0]
el entonces
echo "$ {IP} es hasta ahora."
el otro
echo "$ {IP} está abajo."
Fi

4 guión de combate: determinar si el puerto 80 está encendida
CAT chk80port.sh # [@ la raíz del nodo-scripts 1.]
# / Bin / bash!
Puerto = netstat -lnp | grep 80
SI [-Z "Puerto"]; el entonces
eco; "No Puesta en servicio."
Salir;
fi
servidor_web = echo $port | awk -F'/' '{print $2}'|awk -F : '{print $1}'
Caso $ servidor_web en
httpd)
echo "el servidor Apache."
;;
nginx)
echo "nginx servidor."
;;

  • )
    Echo "otro servidor."
    ;;
    esac

Resultados del ensayo:
[root @ los guiones Nodo-1] # SH chk80port.sh
el servidor Apache.

guión real 5:
compilar e instalar la secuencia de comandos de control del servicio httpd
Descripción: httpd ubicación de instalación de origen en / usr / local / apache directorio local
# / bin / bash!
SI [$ 1 == Inicio]; el entonces
-utpln -an | grep 80 y> / dev / null
SI [$ -eq 0?]; el entonces
"! httpd se inicia" eco
salida 1 de
la persona
/ usr / local / apache / bin / apachectl Start &> / dev / null
echo "+ / usr / local / apache / bin / apachectl start "
eco" + -utpln la -an | grep 80 "
del -utpln -an | grep 80
el PID = $ (-utpln la -an | grep 80 | awk '{} 7 imprimir $.' |. awk -F '/'' 1 $ {Imprimir } ')
echo -e "! el PID se está ejecutando es el httpd el PID $"
Fi
elif [. PARADA == $ 1]; la continuación
del -utpln -an | grep 80 y> / dev / null
SI [? $ 0 -ne]; el entonces
echo "httpd esté parada!"
salida 1
persona
/ usr / local / apache / bin / apachectl y parada> / dev / null
echo "+ / usr / local / apache / bin / apachectl stop"
sueño 2
echo "+ netstat -utpln | grep 80"
netstat -utpln | grep 80
si [$? -ne 0]; a continuación,
echo "httpd está deteniendo!"
fi
fi
elif [$ 1 == reinicio]; a continuación,
-utpln -an | grep 80 y> / dev / null
si [$? -ne 0]; a continuación,
echo "no se inicia httpd!"
/ usr / local / apache / bin / apachectl Start &> / dev / null
echo "+ / usr / local / apache / bin / apachectl start"
sueño 2
echo "+ netstat -utpln | grep 80"
netstat -utpln | grep 80
si [$? -eq 0]; a continuación,
echo "httpd se pone en marcha!"


/ usr / local / apache / bin / apachectl Stop &> / dev / null
echo "+ / usr / local / apache / bin / stop apachectl"
sueño 2
/ usr / local / apache / bin / apachectl Start &> / dev / nulo
eco "+ / usr / local / apache / bin / apachectl start"
sueño 2
echo "+ netstat -utpln | grep 80"
-utpln -an | grep 80
si [$? -eq 0]; a continuación,
echo "httpd se pone en marcha!"
fi
fi
elif [$ 1 == estado]; a continuación,
-utpln -an | grep 80 y> / dev / null
si [$? -eq 0]; a continuación,
echo "httpd está funcionando!"
PID = $ (-utpln -an | grep 80 | awk '{print $ 7}' | awk -F '/' '{print $ 1}')
echo -e "httpd está ejecutando PID es $ PID!"
otra cosa
echo "httpd no está en marcha!"
fi
lo demás
echo "Uso: /etc/init.d/httpd start | stop | restart | estado"
fi

Supongo que te gusta

Origin blog.51cto.com/450955/2484533
Recomendado
Clasificación