LINUX项目实操练习

练习1:

1、提取 https://testing-studio.com/ 中的所有连接

curl https://testing-studio.com | grep -oE "http[s]://[^ '\"]*"
正则解释:-o匹配出符合条件的内容 -E使用扩展 [s] 中括号表示范围 表示匹配http或者https [^ '\"] 表示以空格 单引号或双引号结尾的(直到匹配到这三个中的字符 即结束)

2、去掉链接中的数字,给出一个所有的不带数字的连接

curl https://testing-studio.com | grep -oE "http[s]://[^ '\"]*“ | sed -e's/[0-9]//g' -e's/%.*%.*//g'
‘s/[0-9]//g’  表示把0-9数字用空替换

练习2:

1、从shell服务器上的/tmp/nginx.log中找出所有404 500的报错数据,并去除其中的url
①找出所有404 500的报错数据

awk '$9~/404/ || $9~/500/' /tmp/nginx.log |less
匹配log文件中第九列为404 或500的行
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻,
只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,
不止可以向下搜,也可以向上搜。
更多:https://www.cnblogs.com/peida/archive/2012/11/05/2754477.html

②去除其中的url

awk '$9~/404/ || $9~/500/' /tmp/nginx.log | sed 's/"GET.*HTTP\/[0-9]\.[0-9]"//g'

练习3:

1、找出访问量最高的ip

awk '{print $1}' /tmp/nginx.log |sort |uniq -c | sort -n |tail -10
筛选出log日志中的第一列$1 ip
sort 它将文件进行排序,并将排序结果标准输出
sort(选项)(参数)
-n:依照数值的大小排序;
-r:以相反的顺序来排序;
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。
uniq(选项)(参数)

-c或——count:在每列旁边显示该行重复出现的次数;
-d或--repeated:仅显示重复出现的行列;

练习4:

1、找出访问量最高的页面,/topics/1234 topics/4567 视为一个页面

awk '{print $7}' /tmp/nginx.log |sort | sed 's/\/[0-9].*//g' |uniq -c |sort -n | tail -1

练习5:

提取 https://testing-studio.com/ 中的所有链接
找出不能被访问的连接(已完成)
封装为函数,传入一个网站,自动检查这个网站上的链接(已完成)

#设计一个函数,传入一个字符串或文件 根据判断其中的链接返回code码,找出其中的错误链接
#!/bin/bash
#author:Frank
findFailedUrl(){
urls=$(curl $1 | grep -o -E "http[s]*://[^ ?'\"]*" | uniq -c);
for url in $urls;do
code=$(curl -I -m 10 -o /dev/null -s -w %{http_code} $url);
if ((${code}>=400));then echo "${url}访问失败!";fi
done
}
findFailedUrl https://testing-studio.com
#$(curl -I -m 10 -o /dev/null -s -w %{http_code} $url)
#-I 仅测试HTTP头
#-m 10 最多查询10s
#-o /dev/null 屏蔽原有输出信息
#-s silent 模式,不输出任何东西
#-w %{http_code} 控制额外输出



posted @ 2019-07-02 16:54  头大点怎么了  阅读(567)  评论(0编辑  收藏  举报