四剑客第五关

四剑客第五关

1 查询file.txt 以abc结尾的行

grep 'abc$' file.txt


^ 开头
$ 结尾


[root@master ~]# cat file.txt
sdhfks
sdfsdg
sdkjfhsdjh

sdjfsdgf
abcklsdfjksegfeabc
ekhkeerjkgsekfiabc
ekfhkehhie
dfisdgjfsd
fsdfjsdfs
eiofhjeihfe
esjkfhekhfe
erjkhekfhie
asekfhiweh
ekhreuikehikfhabc

erjkfhei
ekrhksehfguiefg
agkhjdigrjkfthew
'esjfhe

ejnkrhehf
aejkthehfgwe
kwerjehuirhe
ejkrheukyruiew
abcxeklhrkehhabc

erkhef
wekrheh


erjkhekre
kwerhkweh

rjkheghuehjk
[root@master ~]# grep 'abc$' file.txt 
abcklsdfjksegfeabc
ekhkeerjkgsekfiabc
ekhreuikehikfhabc
abcxeklhrkehhabc

2 删除file.txt文件中的空行

sed '/^$/d' file.txt |sponge file.txt
或者
grep -v '^$' file.txt > tmp && mv tmp file.txt

命令解释

grep -v '^$' file.txt:

grep: 是一个强大的文本搜索工具,用于搜索与指定模式匹配的行。
-v: 是一个选项,表示选择不匹配指定模式的行。
'^$': 是一个正则表达式,表示空行。^ 表示行的开始,$ 表示行的结束,所以 ^$ 匹配没有任何字符的行,即空行。
file.txt: 是要搜索的文件名。综合来说,这个命令会从file.txt中选择所有非空行,并打印它们。
> tmp:

这个符号表示重定向输出。这里,grep命令的输出(即file.txt中的所有非空行)会被重定向到一个名为tmp的新文件中。
&&:

这是一个shell操作符,表示只有当左边的命令(在这里是grep -v '^$' file.txt > tmp)成功执行(返回值为0)时,才会执行右边的命令。
mv tmp file.txt:

mv: 是一个移动或重命名文件的命令。
tmp file.txt: 这表示将tmp文件重命名为file.txt。如果file.txt已经存在,它将被tmp的内容替换。

综合起来,这条命令组合的作用是:从file.txt中删除所有空行,并将结果保存回file.txt。这里使用了临时文件tmp来存储中间结果,以确保在替换原始文件之前,新内容已经正确生成。








[root@master ~]# cat file.txt 
sdhfks
sdfsdg
sdkjfhsdjh

sdjfsdgf
abcklsdfjksegfeabc
ekhkeerjkgsekfiabc
ekfhkehhie
dfisdgjfsd
fsdfjsdfs
eiofhjeihfe
esjkfhekhfe
erjkhekfhie
asekfhiweh
ekhreuikehikfhabc

erjkfhei
ekrhksehfguiefg
agkhjdigrjkfthew
'esjfhe

ejnkrhehf
aejkthehfgwe
kwerjehuirhe
ejkrheukyruiew
abcxeklhrkehhabc

erkhef
wekrheh


erjkhekre
kwerhkweh

rjkheghuehjk
[root@master ~]# sed -n '10p' file.txt 
fsdfjsdfs



[root@master ~]# grep -v '^$' file.txt > tmp && mv tmp file.txt 
mv: overwrite ‘file.txt’? y
[root@master ~]# cat file.txt
sdhfks
sdfsdg
sdkjfhsdjh
sdjfsdgf
abcklsdfjksegfeabc
ekhkeerjkgsekfiabc
ekfhkehhie
dfisdgjfsd
fsdfjsdfs
eiofhjeihfe
esjkfhekhfe
erjkhekfhie
asekfhiweh
ekhreuikehikfhabc
erjkfhei
ekrhksehfguiefg
agkhjdigrjkfthew
'esjfhe
ejnkrhehf
aejkthehfgwe
kwerjehuirhe
ejkrheukyruiew
abcxeklhrkehhabc
erkhef
wekrheh
erjkhekre
kwerhkweh
rjkheghuehjk


3 打印file.txt 文件中的第10行

sed -n '10p' file .txt

head -n 10 file.txt  |tail -n 1


[root@master ~]# sed -n '10p' file.txt 
eiofhjeihfe

root@master ~]# head -n 10 file.txt |tail -n 1
eiofhjeihfe

5 在11月份,每天的早上6点到12点中,每隔2个小时执行一次/usr/bin/httpd.sh 怎么实现

crontab -e

0 6-11/2 * 11 * /usr/bin/httpd.sh






 chmod +x /usr/bin/httpd.sh


使用 crontab -e 命令编辑了cron任务,并添加了一个新的定时任务。这个任务的配置如下:

0 6-11/2 * 11 * /usr/bin/httpd.sh

 chmod +x /usr/bin/httpd.sh 来给脚本添加执行权限(如果它还没有的话)









*             *        *       *     *  
  
  含义
  
 分钟        时        日       月    周 
 
 
 
  分钟 0-59
  时 0-23
  日 1-31
  月 1-12
  周 1-7





6 iptables和firewalld 都学习下 禁止 ip 10.10.10.1 访问本地80端口
iptables -I INPUT -s 10.10.10.1/32 --dport 80 -j DROP



方法一
使用 firewalld
首先,您需要确认 firewalld 是否正在运行,并且是否是当前活动的防火墙管理工具。您可以使用以下命令来检查:


systemctl status firewalld
如果 firewalld 没有运行,您可以使用以下命令来启动它:

systemctl enable firewalld
systemctl start firewalld

下一步禁止ip设置


临时生效
firewall-cmd  --zone=public --add-rich-rule='rule family="ipv4" source address="10.10.10.1" port protocol="tcp" port="80" reject'

永久生效
firewall-cmd  --zone=public --add-rich-rule='rule family="ipv4" source address="10.10.10.1" port protocol="tcp" port="80" reject' --permanent

这个命令会在 public 区域中添加一个规则,拒绝来自 10.10.10.1 的所有 TCP 流量到端口 80。--permanent 参数表示规则是持久的,会在系统重启后仍然生效。



重启
firewall-cmd --reload







方法二 iptables


iptables -A INPUT -p tcp -s 10.10.10.1 --dport 80 -j DROP
这条命令会在 INPUT 链中添加一条规则,丢弃来自 10.10.10.1 的所有到端口 80 的 TCP 流量。





service iptables save  
service iptables restart

systemctl restart iptables




7 查看http的并发请求数及其tcp连接数

netstat -tna |grep ':80' |wc -l


netstat -an | grep tcp
netstat -an | grep :80 | wc -l
ss -tan  看所有tcp连接

ss -tan | grep :80 | wc -l





[root@master ~]# netstat -tna |grep ':80' |wc -l
0


[root@master ~]# netstat -an | grep tcp
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0     36 10.0.0.164:22           10.0.0.1:13642          ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
[root@master ~]# netstat -an |grep :80 |wc -l
0
[root@master ~]# ss -tan
State       Recv-Q Send-Q                     Local Address:Port                       Peer Address:Port 
LISTEN      0      128                                    *:22                                    *:*     
ESTAB       0      36                            10.0.0.164:22                             10.0.0.1:13642 
LISTEN      0      128                                   :::22                                   :::*     
[root@master ~]# ss -tan | grep :80 |wc -l
0


8 统计80端口连接数

netstat -ant |grep ':80' |wc -l
ss -tn state established '(sport = :80 or dport = :80)' |wc -l


9 统计已经链接上的,状态为established

ss -t state established


ss -tan state established | wc -l

[root@master ~]# ss -tan state established | wc -l
2




[root@master ~]# ss -t
State       Recv-Q Send-Q                   Local Address:Port                       Peer Address:Port   
ESTAB       0      36                          10.0.0.164:ssh                            10.0.0.1:13642   
[root@master ~]# ss -t state established
Recv-Q Send-Q                        Local Address:Port                            Peer Address:Port   
0      36                               10.0.0.164:ssh                                 10.0.0.1:13642   
[root@master ~]# ss -t state established
Recv-Q Send-Q                        Local Address:Port                            Peer Address:Port   
0      36                               10.0.0.164:ssh                                 10.0.0.1:13642   


10 查出哪个IP地址连接最多

netstat -ntua |grep ESTABLISHED |awk '{print $5}' |cut -d: -f1 |sort |uniq -c| sort -nr

netstat -ntu |awk '{print $5}' |cut -d: -f1 |sort |uniq -c |sort -nr |head -n 1

ss -ntu |awk '{print $5}' |cut -d: -f1 |sort |uniq -c| sort -nr|head -n 1

netstat -ntu |awk '{print $5}' |cut -d: -f1 |sort |uniq -c|sort -nr |grep -vE "127.0.0.|10.|192.168." | head -n 1









[root@master ~]# netstat -ntu |awk '{print $5}' |cut -d: -f1 |sort |uniq -c |sort -nr |head -n 1
      1 servers)
[root@master ~]# ss -ntu |awk '{print $5}' |cut -d: -f1 |sort |uniq -c| sort -nr|head -n 1
      1 Local
[root@master ~]# netstat -ntu |awk '{print $5}' |cut -d: -f1 |sort |uniq -c|sort -nr |grep -vE "127.0.0.|10.|192.168." | head -n 1
      1 servers)


11 统计apache的access.log中访问量最多的ip

cat access.log |awk '{print $1}' |sort |uniq -c |sort -nr |head -n 1

12 如何查看占用端口8080的进程

lsof -i :8080





posted @ 2024-03-14 18:25  三思博客  阅读(9)  评论(0编辑  收藏  举报