3.linux基础自建命题教程
linux基础自建命题
1.列出访问次数前十的ip地址
(1) last命令显示服务器上最近登录的信息,其中第三行为ip地址
[root@node ~]# last<br></br>root pts/0 10.0.0.1 Thu Jul 8 08:57 still logged in <br></br>root tty1 Thu Jul 8 08:57 still logged in <br></br>reboot system boot 3.10.0-862.el7.x Thu Jul 8 08:57 - 16:57 (08:00) <br></br>root pts/1 10.0.0.1 Wed Jul 7 20:16 - 21:32 (01:16) <br></br>root pts/0 10.0.0.1 Wed Jul 7 10:04 - 21:32 (11:28) <br></br>root pts/0 10.0.0.1 Wed Jul 7 09:48 - 10:02 (00:13) <br></br>root tty1 Wed Jul 7 09:48 - 21:51 (12:03) <br></br>reboot system boot 3.10.0-862.el7.x Wed Jul 7 09:46 - 16:57 (1+07:10) <br></br>root pts/0 10.0.0.1 Wed Jul 7 09:02 - crash (00:44) <br></br>root tty1 Wed Jul 7 09:02 - 09:41 (00:39) <br></br>reboot system boot 3.10.0-862.el7.x Wed Jul 7 09:01 - 16:57 (1+07:55) <br></br>root pts/0 10.0.0.1 Tue Jul 6 19:50 - 20:11 (00:20) <br></br>root tty1 Tue Jul 6 19:50 - 20:15 (00:25) <br></br>reboot system boot 3.10.0-862.el7.x Tue Jul 6 19:49 - 20:15 (00:25) <br></br>root pts/0 10.0.0.1 Tue Jul 6 16:59 - crash (02:50) <br></br>root tty1 Tue Jul 6 16:58 - crash (02:51) <br></br>reboot system boot 3.10.0-862.el7.x Tue Jul 6 16:58 - 20:15 (03:17) <br></br>root pts/0 10.0.0.1 Tue Jul 6 09:38 - down (00:12) <br></br>root tty1 Tue Jul 6 09:37 - 09:50 (00:13) <br></br>reboot system boot 3.10.0-862.el7.x Tue Jul 6 09:35 - 09:50 (00:15) <br></br>root pts/0 10.0.0.1 Mon Jul 5 20:59 - 21:20 (00:20) <br></br>root tty1 Mon Jul 5 20:26 - 21:30 (01:03) <br></br>reboot system boot 3.10.0-862.el7.x Mon Jul 5 20:25 - 21:30 (01:04) <br></br>
(2) 对所得到的ip地址进行 取列操作(ip地址是第三列)
last | awk '{print$3}'
(3) 用sort排序,并 uniq- c显示重复行出现的次数
[root@node ~]# last | awk '{print$3}'|sort|uniq -c
(4) 接着用sort -r 按次数降序显示
[root@node ~]# last | awk '{print$3}'|sort|uniq -c|sort -r<br></br> 9 10.0.0.1<br></br> 7 boot<br></br> 3 Tue<br></br> 2 Wed<br></br> 2 Mon<br></br> 1 Thu<br></br> 1 <br></br>
(5) head -10
[root@node ~]# last | awk '{print$3}'|sort|uniq -c|sort -r | head -10
- 将ls命令移动到新建目录下并命名为kk
3.将互联网上的文件下载到Linux服务器,并下载文件然后删除linux里面该文件,最后改好名再上传到原本目录
wget -O /目录/自己起个文件名 互联网文件地址
wget -O /opt/nginx-1.21.1.tar.gz https://nginx.org/download/nginx-1.21.1.tar.gz
[root@node ~]# wget -O /opt/adc https://pics1.baidu.com/feed/c75c10385343fbf20954a0fd1f480c8864388fb7.jpeg?token=3237781f66255554854195059f202dcc<br></br>--2021-07-08 17:39:44-- https://pics1.baidu.com/feed/c75c10385343fbf20954a0fd1f480c8864388fb7.jpeg?token=3237781f66255554854195059f202dcc<br></br>正在解析主机 pics1.baidu.com (pics1.baidu.com)... 221.194.182.35, 2408:871a:5100:101::6548:c723<br></br>正在连接 pics1.baidu.com (pics1.baidu.com)|221.194.182.35|:443... 已连接。<br></br>已发出 HTTP 请求,正在等待回应... 200 OK<br></br>长度:58994 (58K) [image/jpeg]<br></br>正在保存至: “/opt/adc”<br></br><br></br>100%[=================================================================>] 58,994 --.-K/s 用时 0.03s <br></br><br></br>2021-07-08 17:39:44 (1.99 MB/s) - 已保存 “/opt/adc” [58994/58994])<br></br><br></br>[root@node ~]# cd /<br></br>[root@node /]# ls<br></br>bin data etc lib magedu2 mnt proc run srv test.txt usr<br></br>boot dev home lib64 media opt root sbin sys tmp var<br></br>[root@node /]# cd opt<br></br>[root@node opt]# ls<br></br>adc<br></br><br></br>sz命令:上述已吧网络文件命名为adc,接下来下载到本地计算机<br></br>[root@node opt]# sz adc <br></br><br></br>删除linux里面的adc文件<br></br>[root@node opt]# rm -rf ./adc<br></br><br></br>rz命令:最后上传已改名文件,命名为adcde.jpg 。rz命令只能上传到当前位置并不支持文件夹<br></br>[root@node opt]# rz<br></br><br></br>[root@node opt]# ls<br></br>adcde.jpg<br></br>
4.匹配student.txt中xiaoma,并过滤打印出该行上面5行及下面5行
过滤: grep "过滤关键字" 文件路径<br></br> -v:<br></br> -E:支持多条件匹配;<br></br> -i: 忽略大小写<br></br> —A:显示匹配和它后面的n行<br></br> —B:显示匹配行和它前面的n行<br></br> -C:显示匹配行和它前后n行<br></br><br></br>grep A匹配后5行<br></br>[root@node ~]# grep -A5 xiaoma student.txt <br></br>xiaoma 100<br></br>dadad 111<br></br><br></br>匹配前后各五行<br></br>[root@node ~]# grep -C5 xiaoma student.txt <br></br>sall 91<br></br>msdao 51<br></br>djaas 11<br></br>zds 5<br></br>dawf 13<br></br>xiaoma 100<br></br>dadad 111<br></br>
5.GNU GNU's Not UNIX 的缩写,1984年由 Richard Stallman 发起并创建 目标是编写大量兼容于Unix系统的自由软件。
6.如何创建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a,/testdir/dir1/y/b
mkdir
mkdir : 创建目录<br></br>-p : 忽略报错,且可以自动创建出所需的父目录<br></br>-v : 显示命令的详细操作过程<br></br>-m [mode]: 创建时直接指定权限<br></br>rmdir : 删除空目录<br></br>-p : 递归删除空目录<br></br>-v : 显示命令的详细操作过程1.2.3.4.5.6.7.<br></br><br></br>[root@node /]# mkdir -pv testdir/dir1/{x..y}/{a..b}<br></br>mkdir: 已创建目录 "testdir"<br></br>mkdir: 已创建目录 "testdir/dir1"<br></br>mkdir: 已创建目录 "testdir/dir1/x"<br></br>mkdir: 已创建目录 "testdir/dir1/x/a"<br></br>mkdir: 已创建目录 "testdir/dir1/x/b"<br></br>mkdir: 已创建目录 "testdir/dir1/y"<br></br>mkdir: 已创建目录 "testdir/dir1/y/a"<br></br>mkdir: 已创建目录 "testdir/dir1/y/b"<br></br><br></br><br></br>[root@node testdir]# mkdir -pv testdir/dir1/{x,y}/{a,b}<br></br><br></br>mkdir: 已创建目录 "testdir"<br></br>mkdir: 已创建目录 "testdir/dir1"<br></br>mkdir: 已创建目录 "testdir/dir1/x"<br></br>mkdir: 已创建目录 "testdir/dir1/x/a"<br></br>mkdir: 已创建目录 "testdir/dir1/x/b"<br></br>mkdir: 已创建目录 "testdir/dir1/y"<br></br>mkdir: 已创建目录 "testdir/dir1/y/a"<br></br>mkdir: 已创建目录 "testdir/dir1/y/b"<br></br>[root@node testdir]# ll<br></br>总用量 0<br></br>drwxr-xr-x. 4 root root 24 7月 8 19:47 dir1<br></br>drwxr-xr-x. 3 root root 18 7月 8 19:52 testdir<br></br>[root@node testdir]# <br></br><br></br>mkdir 后面执行只能用 { } ;-pv是忽略报错显示命令详细过程
7.排序和去重
1.排序sort、去重;<br></br> 选项:<br></br> -k:指定列(默认以空格为分隔符)<br></br> -n:以number方式排序<br></br> -r:反转(从大到小)<br></br><br></br><br></br> 2.去重:<br></br> uniq:<br></br> 选项:<br></br> -c:count出现的次数;<br></br><br></br><br></br> [root@node ~]# sort -k 2 -n -r students.txt <br></br> xiaohong 123<br></br> XiAoniu 88<br></br> xiaojun 80<br></br> xiaoma 66<br></br> xiaowang 50<br></br> xiaoming 30<br></br> xiaohong 18<br></br> xiaohong 11<br></br> xiaohong 1<br></br><br></br><br></br> [root@node ~]# sort -k 2 -n -r students.txt | uniq -c <br></br> 1 xiaohong 123<br></br> 1 XiAoniu 88<br></br> 1 xiaojun 80<br></br> 1 xiaoma 66<br></br> 1 xiaowang 50<br></br> 1 xiaoming 30 <br></br> 1 xiaohong 18<br></br> 2 xiaohong 11<br></br> 1 xiaohong 1<br></br><br></br><br></br> 需求:有一个日志文件,统计每个IP出现的次数,然后将top3 打印出来;<br></br><br></br> 1.先排序;<br></br> 2.去重,统计;<br></br> 3.取前3;<br></br><br></br> [root@node ~]# sort 1.log | uniq -c | sort -nr | head -3<br></br> 153 161.35.86.181<br></br> 60 180.97.165.74<br></br> 42 101.72.213.150
8.1.统计: 统计文件有多少行: wc -l 统计文件内容中有多少行;
cat student.txt -n查看student.txt有多少行并排序
[root@node ~]# wc -l student.txt <br></br>11 student.txt<br></br>[root@node ~]# cat student.txt <br></br>lihua 99 <br></br>lili 90<br></br>lsal 90 <br></br>sall 91<br></br>msdao 51<br></br>djaas 11<br></br>zds 5<br></br>dawf 13<br></br>xiaoma 100<br></br>dadad 111<br></br><br></br>[root@node ~]# cat student.txt -n<br></br> 1 lihua 99 <br></br> 2 lili 90<br></br> 3 lsal 90 <br></br> 4 sall 91<br></br> 5 msdao 51<br></br> 6 djaas 11<br></br> 7 zds 5<br></br> 8 dawf 13<br></br> 9 xiaoma 100<br></br> 10 dadad 111<br></br> 11 <br></br>[root@node ~]# <br></br>
Linux awk抓取IP的两种方式
ip addr show ens33 | awk -F "[ /]+" '/inet /{print $3}'
或
ifconfig ens33 | awk -F "[ :]+" '/inet /{print $4}'
或格式化输出所有网卡的IP
for dev in $(awk -F : '{if(NR>2)print $1}' /proc/net/dev);do printf '%+10s: ' $dev;echo $(ip addr show $dev | awk -F "[ /]+" '/inet /{print $3}'); done