- ping主机测试,查看主机是否存活;
Vim 1.sh
#!/bin/bash
# 函数:检查主机是否存活
function check_host_alive() {
ping -c 1 -w 2 $1 > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "主机 $1 存活"
else
echo "主机 $1 不可达"
fi
}
# 调用函数测试主机是否存活,这里假设要测试的主机IP是192.168.1.100,你可替换成实>际要测试的主机IP
check_host_alive 192.168.190.149
Bash 1.sh
测试
read -p "请输入要测试的主机地址: " host_ip
check_host_alive $host_ip
2. 判断一个用户是否存在;
Vim 2.sh
function check_user_exists(){
if id "$1" > /dev/null 2>&1;then
echo "用户 $1 存在"
else
echo "用户 $1 不存在"
fi
}
read -p "请输入要测试的用户: " user_name
check_user_exists $user_name
~
3.判断当前内核主版本是否为3,且次版本是否大于10;
function check_kernel_version() {
kernel_version=$(uname -r)
major_version=$(echo $kernel_version | cut -d. -f1)
minor_version=$(echo $kernel_version | cut -d. -f2)
if [ $major_version -eq 3 ] && [ $minor_version -gt 10 ]; then
echo "内核主版本为3且次版本大于10"
else
echo "内核版本不符合要求"
fi
}
check_kernel_version
5、判断nginx是否运行;如果没有,则运行它,并且开机启动
function check_and_start_nginx(){
if pgrep nginx > /dev/null;then
echo "nginx正在运行"
else
echo "nginx未运行,正在启动..."
systemctl start nginx
systemctl enable nginx
echo "nginx已启动并设置为开机启动"
fi
}
check_and_start_nginx
~
~
6、判断指定的主机是否能ping通,必须使用$1变量;
# 函数:判断指定主机是否能ping通
function check_host_pingable() {
ping -c 1 -w 2 $1 > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "主机 $1 能ping通"
else
echo "主机 $1 不能ping通"
fi
}
# 示例用法,假设在脚本命令行参数中传入要检查的主机地址
# 比如执行脚本时:./script.sh 192.168.1.100
check_host_pingable 192.168.190.149
7、报警脚本,要求如下:
根分区剩余空间小于20%
内存已用空间大于80%
向邮箱发送告警邮件
配合crond每5分钟检查一次
[root@locaklhost ~]# echo "邮件正文" | mail -s "邮件主题" alice
#!/bin/bash
used=$( df / | grep / | tr -s " " | cut -d " " -f 5 | sed 's/%//')
used_mem=$(free -m | grep Mem | tr -s " " | cut -d " " -f 3)
total_mem=$(free -m | grep Mem | tr -s " " | cut -d " " -f 2)
used_percent=$(echo "scale=2; ($used_mem / $total_mem) * 100 " | bc)
used_percent_int=$(echo "$used_percent" | cut -d '.' -f 1)
if [ $used -gt 80 ];then
echo "根分区剩余空间小于20%!" | mail -s "dir_waring" 2656645312@qq.com &> /dev/null
fi
if [ $used_percent_int -gt 80 ];then
echo "内存已用空间大于80%!" | mail -s "used_waring" 2656645312@qq.com & /dev/null
fi
8、判断用户输入的是否是数字,如果是数字判断该数字是否大于10;
#!/bin/bash
read -p "请输入一个字符串: " input
# 判断是否为数字
if [[ $input =~ ^[0-9]+$ ]]; then
num=$input
if [ $num -gt 10 ]; then
echo "$num 是大于 10 的数字"
else
echo "$num 是数字但不大于 10"
fi
else
echo "$input 不是数字"
~
9、计算用户输入的任意两个整数的和、差、乘积、商、余数,
判断用户输入的参数是否是两个,如果不是,提示用法;
判断用户输入的是否是整数,如果不是,则给出提示终止运行。
#!/bin/bash
# 检查传入参数个数是否为2
if [ $# -ne 2 ]; then
echo "Usage: $0 integer1 integer2"
exit 1
fi
# 检查输入的是否为整数
is_int1=false
is_int2=false
if [[ $1 =~ ^-?[0-9]+$ ]]; then
is_int1=true
fi
if [[ $2 =~ ^-?[0-9]+$ ]]; then
is_int2=true
fi
# 修正后的条件判断方式
if [ ! $is_int1 ] || [ ! $is_int2 ]; then
echo "Both inputs must be integers."
exit 1
fi
num1=$1
num2=$2
sum=$((num1 + num2))
diff=$((num1 - num2))
product=$((num1 * num2))
quotient=$((num1 / num2))
remainder=$((num1 % num2))
echo "Sum: $sum"
echo "Difference: $diff"
echo "Product: $product"
echo "Quotient: $quotient"
echo "Remainder: $remainder"