shell编程100例(3)

1/# 编写一个点名器脚本
# 该脚本,需要提前准备一个 user.txt 文件
# 该文件中需要包含所有姓名的信息,一行一个姓名,脚本每次随机显示一个姓名
#!/bin/bash
while :
do
#统计 user 文件中有多少用户
line=cat user.txt |wc ‐l
num= [ R A N D O M s e d − n " [RANDOM%line+1] sed -n " [RANDOMsedn"{num}p" user.txt
sleep 0.2
clear
done

2/# 统计/var/log 有多少个文件,并显示这些文件名

# 使用 ls 递归显示所有,再判断是否为文件,如果是文件则计数器加 1
#!/bin/bash
cd /var/log
sum=0
for i in ls -r *
do
if [ -f i ] ; t h e n l e t s u m + + e c h o " 文 件 名 : i ];then let sum++ echo "文件名: i];thenletsum++echo":i"
fi
done
echo “总文件数量为:$sum”

3/
#!/bin/bash
# 查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计)
# 使用 netstat ‐atn 可以查看本机所有连接的状态,‐a 查看所有,
# -t仅显示 tcp 连接的信息,‐n 数字格式显示
# Local Address(第四列是本机的 IP 和端口信息)
# Foreign Address(第五列是远程主机的 IP 和端口信息)
# 使用 awk 命令仅显示第 5 列数据,再显示第 1 列 IP 地址的信息
# sort 可以按数字大小排序,最后使用 uniq 将多余重复的删除,并统计重复的次数
netstat -atn | awk ‘{print $5}’ | awk ‘{print $1}’ | sort -nr | uniq -c

4/
#!/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

5/
#!/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

你可能感兴趣的:(shell编程100例(3))