网络安全自学笔记09 - Linux工具使用

一、sed 修改文档操作

1、概念

  • 在Linux/UNIX系统中包含很多中文本处理器或文本编辑器,而 grep,sed,awk更是shell编程中经常用到的文本处理工具,被称之为 shell编程三剑客
  • sed 是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed也可以在无交互的情况下现实相当复杂的文本处理操作,被广泛应用在shell脚本中,用以完成各种自动化处理任务

2、sed命令常见用法

  • 语法

    sed[选项] '操作' 参数
    # 常用选项
    -e 表示用指定命令或这脚本来处理输入的文本文件
    -f 表示用指定的脚本文件处理输入的文本文件
    -h 显示帮助
    -n 表示仅显示处理后的结果
    -i 直接编辑文本文件(注意需次参数才能修改并保存原始文件)
    # 常见操作
    a 增加
    c 替换,整行替换
    d 删除
    i 插入
    p 打印,如果同时指定行打印指定行,否则打印全部内容,如果有非打印字符以ASCII码输出,通常以-n一起使用
    s 替换,指定字符替换
    y 字符转换
    
  • 输出符合条件的文本示例(p)

    sed -n 'p' test.txt    # 输出所有内容,同等与 cat test.txt
    sed -n '3p' test.txt   # 输出第三行
    sed -n '3,5p' test.txt # 输出3~5行
    sed -n 'p;n' test.txt  # 输出所有奇数行,n表示读入下一行
    sed -n 'n;p' test.txt  # 输出所有偶数行,n表示读入下一行
    sed -n '1,5{p;n}' test.txt # 输出1~5行间的奇数行
    sed -n '10,${n;p}' test.txt # 输出10~末尾的偶数行
    sed -n '/the/p' test.txt # 输出包含the的行
    sed -n '4,/the/p' # 输出从4行至第一个包含the的行
    sed -n '/the/=' # 输出包含the的行所在的行号,等号=用来输出行号
    sed -n '/^the/p' # 输出以the开头的行
    sed -n '/\<wood/>/p' test # 输出包含单词wood行,\< \>代表单词边界
    
  • 删除符合条件的文本示例(d)

    sed '3d' test.txt      # 删除第3行
    sed '3,5d' test.txt    # 删除3~5行
    sed '/the/d' test.txt  # 删除包含the的行 使用!取反操作 '/the/!d'
    sed '/^[a-z]/d' test.txt # 删除小写字母开头的行
    sed '/the$/d' test.txt   # 删除以the结尾的行
    sed '/^$/d' test.txt     # 删除所有空行
    
    
  • 替换符合条件的文本示例(s字符串替换、c整行整块替换、y字符转换)

    sed 's/the/THE/' test.txt  # 将每行中的第一个the替换为THE
    sed 's/i/I/2' test.txt     # 将每行中的第三个i替换为THE
    sed 's/the/THE/g' test.txt # 将文件中的所有the替换为THE
    sed 's/o//g' test.txt    # 将文件中的所有o删除(替换成)
    sed 's/^/#/' test.txt    # 在每行行首插入#号
    sed '/the/s/^/#/' test.txt # 在包含the的每行行首插入#号
    sed 's/$/EOF/' test.txt  # 在每行行尾插入字符串EOF
    sed '3,5/the/THE/g' test.txt  # 将3~5行中的所有the替换为THE
    sed '/the/s/o/O/g' test.txt   # 将包含the的所有行中的o都替换为O
    
  • 迁移符合条件的文本示例(H复制到粘贴板;g、G将剪贴板的中的数据覆盖/追加指定行;w保存为文件;r读取指定文件;a追加指定内容)

    sed '/the/{H;d};$G' test.txt  # 将包含the的行迁移至文件末尾,{;}用于多个操作
    sed '1,5{H;d};17G' test.txt   # 将1~5行内容移动到17行后
    sed '/the/w out.file' test.txt # 将包含the的行另存为文件out.file
    sed '/the/r /etc/hostname' test.txt # 将/etc/hostname的内容添加到包含the的每行以后
    sed '3aNew' test.txt  # 在第三行后插入一个新行内容为New
    sed '/the/aNew' test.txt # 在包含the的每行后插入一个新行内容为New
    sed '3aNew1\nNuw2' test.txt # 在第三行后插入多行内容,中间的\n表示换行
    
  • 使用脚本编辑文件示例

#举例 将第1~5行内容转移值17行后
sed '1,5{H;d};17G' test.txt 
# 编辑成脚本写法为
vi opt.list
	1,5H
	1,5d
	17G
# 调用脚本
sed -f opt.list test.txt

二、awk 格式化输出

1、awk常见语法

  • 语法

    awk 选项 '模式或条件{编辑指令}' 文件1 文件2 ...
    awk -F 脚本文件 文件1 文件2
    # awk的特殊内置变量
    FS:指定每行文本的字段分隔符,默认为空格或制表位
    NF:当前处理的行的字段个数
    NR:当前出里的行的行号
    $0 :当前处理的行的整行内容
    $n :当前处理行的第n列
    FILENAME :被处理的文件名
    RS:数据记录分割,默认为\n,既每行为一条记录
    
    • 单引号加上大括号用于设置对数据进行的处理动作
    • wak可以直接处理目标文件,也可以通过-f读取脚本对目标文件进行处理
    • 可以使用逻辑运算符 && 表示与,||表示或 !表示非 。还可以进行简单的数学运算,+ - * / % ^ 分别表示 加、减、乘、除、取余和乘方
  • 按行输出文本示例

    awk -F ':' '{print $1,$3,$4}' /etc/passwd # 以:做分割输出全部行的第1 3 4列内容
    awk -F ':' '$2==""{print}' /etc/passwd # 以:做分割输出密码为空的用户
    awk -F ':' '$7~"/bash"{print $1}' /etc/passwd # 以:做分割输出第7个字段中包含bash的行的第一个列
    awk 'NR==1,NR==3{print}' test.txt # 输出1~3行内容
    awk 'NR==1||NR==3{print}' test.txt # 输出第1行、第三行内容
    awk '(NR%2)==1{print}' test.txt # 输出所有奇数行的内容
    awk '(NR%2)==0{print}' test.txt # 输出所有偶数行的内容
    awk '/^root/{print}' test.txt # 输出以root开头的行
    awk '/root$/{print}' test.txt # 输出以root结尾的行
    awk 'BEGIN {x=0};/\/bin\/bash$/{x++};END{print x}' test.txt  #统计以/bin/bash 结尾的行数,同grep -c "/bin/bash$" test.txt 
    awk 'BEGIN{RS=""};END{print NR}'  test.txt  #统计以空格分隔符的文本段落数
    

在这里插入图片描述

三、TCPDump 抓包工具

1、概念

  • TCPDump是基于数据包的五元组(源IP、目的IP、源端口、目的端口、协议)进行网络上的数据包截获的包分析工具,支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not、等逻辑语句来帮助去掉无用的信息

2、TCPDump指令

# 安装 TCPDump
yum -y install tcpdump

# 抓取arp协议
tcpdump -b arp -i ens33
-b  # 再网络层上选择协议
-i  # 指定网络接口

# 指定来源IP和目的IP或网段并写入查看
tcpdump -i any src host 192.168.1.1 -nn -v -w client.pcap
src、dst、net  # 指定来源IP、目的IP、网段
host # 指定主机
-nn  # 禁止反向解析
-v   # 显示详细抓包信息
-w   # 写入到client.pcap
-s   # 指定每个报文抓包字节数

# 抓传输层指定端口 tcp、udp
tcpdump -nn -i any tcp port 80

# 使用逻辑表达式(or、and、not)
tcpdump -nn -i any host 192.168.1.1 and icmp

# 指定数据包大小过滤字节(greater、less)
tcpdump -nn -s 0 -i any host 192.168.1.1 and greater and icmp 

# 抓取指定fiag位的报文
tcpdump -nn -i any -s 0 -c 1 'tcp[tcpflags] & tcp-syn !=0'

四、crontab 周期性计划任务

1、简介

  • crontab命令设置的计划任务可以按预设的周期重复执行
  • 启用周期性任务也有一个前提条件,既对应的系统服务crond必须以及运行

2、crontab配置文件以及目录

  • /etc/crontab(系统任务配置文件)
  • /var/spool/cron/(用户cron任务的配置文件存放目录)

3、crontab 命令管理用户的计划任务

  • 语法

    # -e 编辑cron任务文件内容
    crontab -e
    55 23 * * 7 /uer/bin/ls
    # 常用参数
    -u 指定所管理的计划任务属于哪个用户,默认是当前用户,一般只有root有次权限使用次选项
    -l 列表显示计划任务
    -r 删除计划任务列表
    # * 号代表 分别代表 分钟 小时 天 月 周
    */2 * * * * 命令
    减号 "-" 表示一个连续的时间范围,如 1-4
    逗号 "," 表示一个准确的时间点,如 3,4,6,7
    斜杠符号 "/" 表示可以用来指定间隔频率,如 日期字段中 */3 表示每隔三天
    邮件目录:var/spool/mail/root。MAILTO=""则设置不发邮件
    

4、sleep 周期定时任务

# 将脚本暂停一段时间 默认为秒 
sleep n 
usleep n  # 纳秒级

5、at 定时任务

  • yum -y install at 安装服务,使用at命令需保证atd系统服务运行
at 15:30
at> date >> /opt/time.txt

五、mail 邮件命令

# 安装mail工具
yum install mailx
# 启动服务
systemctl start postfix
# 编辑配置文件
vi /etc/mail.rc
	set from=xxx@qq.com (发件人的邮箱地址)
	set smtp=smtp.qq.com (发邮件的服务器)
	set smtp-auth-user=xxx@qq.com(邮箱账号)
	set smtp-auth-password=(邮箱密码or授权码)
	set smtp-auth=login (认证方式登录)
# 发送邮件
echo "内容" | mail -s "标题" -a 附件 目标邮箱地址 

六、md5sum 生成MD5值

# 生成文件的MD5值,注意文件夹会报错
md5sum /opt/*
# 避免文件夹报错方法find查找所有文件后生成MD5值
find /opt -type f | xargs md5sum 
# 将生成的MD5值保存起来
find /opt -type f | xargs md5sum > /home/baseopt.md5
# 利用md5sum -c base 来检查文件是否被篡改
md5sum -c /home/baseopt.md5
md5sum -c /home/baseopt.md5 -c --quiet /home/baseopt2.md5 

七、diff 文件内容对比

diff /home/123.txt /home/456.txt
d代表删除
a代表新增
c代表修改






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
B站上的韩顺平老师的《Linux学习笔记》系列课程非常值得推荐。通过这个课程,我学到了很多关于Linux操作系统的知识和技能。 首先,韩老师在课程中详细介绍了Linux的基本概念和特点。我清楚地了解到Linux是一个开源的操作系统,具有稳定性、安全性和可定制性强的特点。这让我对Linux有了更深入的理解,也更有信心去学习和使用它。 其次,韩老师从基础开始,逐步讲解了Linux的安装和配置。他用简单明了的语言和实际操作的示范,帮助我了解了如何在虚拟机上安装Linux系统,并设置网络、用户账户、文件系统等。这为我后续的学习和实践打下了坚实的基础。 此外,韩老师还讲解了Linux的常用命令和工具。他详细介绍了常用的文件和目录操作命令,比如cd、ls、mkdir、cp等。同时,他还讲解了grep、sed、awk等强大的文本处理工具使用方法。这些内容帮助我更加高效地进行文件管理和数据处理。 最后,韩老师还介绍了Linux的网络管理和安全防护。他讲解了如何配置网络连接、使用ssh远程登录以及设置防火墙等内容。这些知识对我了解网络和保护系统安全非常有帮助。 总的来说,韩顺平老师的《Linux学习笔记》课程非常实用,对于初学者来说是入门学习Linux的好选择。他通过深入浅出的讲解和丰富的实操示范,让我可以轻松地学习到Linux的基本知识和操作技巧。我相信通过学习这个课程,我会在Linux领域有更进一步的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

imphoon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值