条件判断语句的shell脚本的练习 (主机名合法性 主机连通性 进程存在性 用户存在性 软件包安装 内核版本)
一用户输入云服务器相关信息(主机名),判断主机名输入是否合法?
1.合法输出主机名,为空不合法。
#!/bin/bash
read -p 'hostname:' hostname
if [ -z $hostname ];
then
echo "The Hostname is False"
else
echo "$hostname"
fi
二、主机连通性判断
1.需求: 判断当前主机是否和远程主机ping通? 实现思路如下所示:
- 使用哪个命令实现 ping -c次数
- 根据命令的执行结果状态来判断是否通$?
- 根据逻辑和语法结构来编写脚本(流程控制语句
#!/bin/bash
ip=$*
if [ -z $ip ];then
echo "Usage:ping [ip]"
exit 1
else
ping -c1 $ip &> /dev/null
if [ $? -eq 0 ]
then
echo "$ip can ping"
else
echo "$ip can not ping"
fi
fi
三、进程存在性判断
1.需求: 判断Web服务器中httpd进程是否存在? 实现思路如下所示:
- 查看进程的相关命令 ps pgrep
- 根据命令的执行结果状态来判断是否通$?
- 根据逻辑和语法结构来编写脚本(流程控制语句)
#!/bin/bash
name=$*
pgrep $name &> /dev/null
if [ $? -eq 0 ];
then
echo "$name process existse"
else
echo "$name process not existse"
fi
四、用户存在性判断
1.需求: 输入一个用户,用脚本判断该用户是否存在?实现思路如图所示:
- 查看进程的相关命令 id username | grep -w username /etc/passwd
- 根据命令的执行结果状态来判断是否通$?
- 根据逻辑和语法结构来编写脚本(流程控制语句)
#!/bin/bash
read -p "username:" username
if [ -z "$username" ];then
echo "pleas input username"
else
id $username &>/dev/null
if [ $? -eq 0 ];
then
echo `id $username`
else
echo "$username not existse"
fi
fi
五、软件包安装判断
1.需求: 用脚本判断一个软件包是否安装,如果没安装则安装它
假设本地yum已搭好,软件仓库搭建请查看之前博客
#!/bin/bash
read -p "please input package name:" name
rpm -ql $name &>/dev/null
if [[ $? -eq 0 ]];then
echo "$name installed"
else
echo "$name not installed,installing........"
dnf install $name -y 1>/dev/null
if [ $? -eq 0 ];
then
echo "$name install successful"
else
echo "$name install faliled"
fi
fi
六、内核版本判断
- 判断当前内核主版本是否为4,且次版本是否大于等于6;
- 如果都满足则输出当前内核版本
#!/bin/bash
master_version=`uname -r | cut -d . -f 1`
salve_version=`uname -r | cut -d . -f 2`
version_detail=`uname -r`
######### method 1 #############
if [ $master_version = 4 ];
then
if [ $salve_version -ge 6 ];
then
echo $version_detail
fi
fi
echo "------------------"
######### method 2 #############
[ $master_version = 4 -a $salve_version -ge 6 ] && echo $version_detail
echo "------------------"
######### method 3 #############
if [ $master_version = 4 -a $salve_version -ge 6 ];
then
echo $version_detail
fi
echo "------------------"
######### method 4 #############
if [ $master_version = 4 ] && [ $salve_version -ge 6 ];
then
echo $version_detail
fi