shell脚本大全(二)

x33g5p2x  于2021-12-17 转载在 Shell  
字(2.4k)|赞(0)|评价(0)|浏览(618)

一、实现Ping一个网段的所有IP,并检测网络连接状态是否正常

1、案例1

#!/bin/sh
# Ping网段所有IP
ip=130 #通过修改初值
while [ $ip != 140 ]; do
#yes正常,no主机不存在或不正常
ping 192.168.13.$ip -c 2 | grep -q "ttl=" && echo "192.168.13.$ip yes" || echo "192.168.13.$ip no"
ip=`expr "$ip" "+" "1"`
done

2、案列2

#!/bin/sh
# Ping网段所有IP
ip="192.168.13."
for i in `seq 130 140`
do
ping -c 2 $ip$i | grep -q 'ttl=' && echo "$ip$i yes"|| echo "$ip$i no"
#yes正常,no主机不存在或不正常
done

二、判断网络是否流畅

#检测网络链接畅通
function network()
{
    #超时时间
    local timeout=1

    #目标网站
    #网站如果是https需要加上
    local target=https://www.jsbke.cn

    #获取响应状态码
    local ret_code=`curl -I -s --connect-timeout ${timeout} ${target} -w %{http_code} | tail -n1`

    if [ "x$ret_code" = "x200" ]; then
        #网络畅通
        return 1
    else
        #网络不畅通
        return 0
    fi

    return 0
}

network
if [ $? -eq 0 ];then
        echo "网络不畅通,请检查网络设置!"
        exit -1
fi

echo "网络畅通,你可以上网冲浪!"

exit 0

三、根据文件中的用户名信息创建用户

#查看系统中所有的用户信息
lslogins
#创建文件
touch user.txt

#编辑文件
vim user.txt

#添加用户信息
user001
user002
user003
#创建sheell文件并编写shell脚本

#!/bin/bash

# 使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码
# 本脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户名信息
for i in `cat user.txt`
do
        useradd  $i
        echo "123456" | passwd ‐‐stdin $i
done
#查看系统中所有的用户信息,会在列表中出现文件中的用户信息
lslogins

四、点名器

#!/bin/bash

# 编写一个点名器脚本

# 执行此脚本首先需要创建一个 user.txt 文件
# 该文件中需要包含所有姓名的信息,一行一个姓名,脚本每次随机显示一个姓名
while :
do
#统计 user 文件中有多少个用户的信息
line=`cat user.txt |wc -l`
num=$[ RANDOM%line+1 ]
sed -n "${num}p"  user.txt
sleep 0.2
exit

done

五、对100以内的整数相加

#seq 100 可以快速自动生成 100 个整数
sum=0
for i in `seq 100`
do
        sum=$[sum+i]
done
echo "和是:$sum"

六、统计一定时间内所有访问 apache 服务器的请求有多少个

#!/bin/bash
 
# 统计 13:30 到 14:30 所有访问 apache 服务器的请求有多少个
 
# awk 使用‐F 选项指定文件内容的分隔符是/或者:
# 条件判断$7:$8 大于等于 13:30,并且要求,$7:$8 小于等于 14:30
# 最后使用 wc ‐l 统计这样的数据有多少行,即多少个
awk -F "[ /:]" '$7":"$8>="13:30" && $7":"$8<="14:30"' /var/log/httpd/access_log |wc -l

七、统计一定时间内所有访问本机 Aapche 服务器的远程 IP 地址是什么

#!/bin/bash
 
# 统计 13:30 到 14:30 所有访问本机 Aapche 服务器的远程 IP 地址是什么 
# awk 使用‐F 选项指定文件内容的分隔符是/或者:
# 条件判断$7:$8 大于等于 13:30,并且要求,$7:$8 小于等于 14:30
# 日志文档内容里面,第 1 列是远程主机的 IP 地址,使用 awk 单独显示第 1 列即可
awk -F "[ /:]" '$7":"$8>="13:30" && $7":"$8<="14:30"{print $1}' /var/log/httpd/access_log

八、统计每个远程IP访问了本机apache的次数

awk  '{ip[$1]++}END{for(i in ip){print ip[i],i}}'  /var/log/httpd/access_log

九、统计当前Linux系统中可以登录计算机的账户有多少个

# 统计当前 Linux 系统中可以登录计算机的账户有多少个
grep "bash$" /etc/passwd | wc -l

十、统计某个文件下有多少个文件并显示这些文件名

# 统计/var/log 有多少个文件,并显示这些文件名
cd  /var/log
sum=0
for i in `ls -r *`
do
        if [ -f $i ];then
        let sum++
        echo "文件名:$i"
        fi
done
echo "总文件数量为:$sum"

相关文章