ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Data Wrangling-数据整理

2021-09-05 11:32:34  阅读:250  来源: 互联网

标签:Disconnected Wrangling invalid sed user preauth 整理 Data port


学习资料

我们经常都会查看日志-log,去查看进程信息,排查错误

Linux 系统都会运行一个常规的日志守护程序,它所有的输出称之为系统日志

journalctl

journalctl command 允许我们查看 system log

$ journalctl # 打印此时的系统日志,这可以 backup 到 1月1日 or further
$ journalctl | grep ssh # 利用 grep 过滤信息,发现不断有人连接与断开与该服务器的 ssh 连接
Aug 29 03:49:42 VM-16-14-ubuntu sshd[23841]: Connection closed by authenticating user root 174.92.44.128 port 57460 [preauth]
Aug 29 03:49:43 VM-16-14-ubuntu sshd[23850]: Failed password for invalid user znc from 120.48.25.206 port 45426 ssh2
Aug 29 03:49:43 VM-16-14-ubuntu sshd[23850]: Received disconnect from 120.48.25.206 port 45426:11: Bye Bye [preauth]
Aug 29 03:49:43 VM-16-14-ubuntu sshd[23850]: Disconnected from invalid user znc 120.48.25.206 port 45426 [preauth]
$ ssh root@xx.xx.xx ls # 从 host machine 发送 ls 命令到 xx.xx.xx 机器上执行 ls 命令并将结果通过 Internet 返回到 host
$ ssh root@xx.xx.xx journalctl | grep ssh | grep "Disconnected from" # 该命令会将整个 systemlog 发送到本地执行两次 grep 过滤
# ssh 到 第一个 pipe 符号之间的内容会将命令送往 remote machine
$ ssh root@xx.xx.xx 'journalctl | grep ssh | grep "Disconnected from"' | less # 效果会是将在 remote machine 的 shell 中执行字符串中的命令,将结果返回,并使用 less 命令查看, less 命令的效果类似 vim、journalctl,它会打开 new page,and navigate the bottom of the page

sed

sed 是一个 stream editor,可以将当前 input stream 放入缓冲区进行处理,处理结果返回给屏幕处理

sed 可以配合正则表达式使用

正则表达式 在线网站进行 调试

$ cat xx.log | sed 's/.*Disconnected from //' | less # . 匹配非换行符的所有字符; * 匹配前面的子表达式 0 或 多次;+ 匹配前面的子表达式 1 次或 多次
$ echo 'abc' | sed 's/[ab]//' # [ab]匹配 square bracket 中的 a 或 b 字符
bc
$ echo 'adbce' | sed 's/[ab]//g' # g modifier 将会令 sed 扫描每个字符,判断该字符起始是否符合 replace expression,上面的无 g 修饰的表达式,匹配到一次将不会继续进行匹配
dce
# 注意 -E 表示将后面的()转义掉,不将()作为匹配的一部分,如果不使用 -E 参数,则需要 sed 's/\(ab\)//g'
$ echo 'abcaba' | sed -E 's/(ab)//g' # (ab) pattern 意味着 同时满足 first character is a and 第二个字符是 b,(ab)* 意味着不断匹配 ab 字符串
ca
$ echo 'abcabac' | sed -E 's/(ab|ba)//g'
cc
$ echo 'ababcaba' | sed -E 's/(ab)*//'
(abab)caba -> caba
$ echo 'Discon Discon Discon abc' | sed -E 's/.*Discon//' # 不停匹配以 Discon 结尾的字符串
 abc
 

示例文本:

$ ssh root@42.192.7.119 journalctl | grep 'Disconnected from' > text.txt
Aug 29 03:31:30 VM-16-14-ubuntu sshd[20541]: Disconnected from invalid user oracle 167.99.231.236 port 47480 [preauth]
Aug 29 03:31:31 VM-16-14-ubuntu sshd[20546]: Disconnected from invalid user tiago 128.199.102.212 port 60108 [preauth]
Aug 29 03:32:42 VM-16-14-ubuntu sshd[20759]: Disconnected from invalid user teacher 120.48.25.206 port 48512 [preauth]
Aug 29 03:32:52 VM-16-14-ubuntu sshd[20780]: Disconnected from invalid user virl 101.78.9.237 port 42376# 末尾无空格
Aug 29 03:34:12 VM-16-14-ubuntu sshd[21014]: Disconnected from invalid user virl 111.67.207.25 port 49672 # 末尾有空格
Aug 29 03:35:07 VM-16-14-ubuntu sshd[21177]: Disconnected from invalid user nginx 167.99.231.236 port 59838 [preauth]

$ cat test.txt | sed -E 's/^.*Disconnected from (invalid )?user .* [0-9.]+ port [0-9]+ $//g'
# 匹配到的是
Aug 29 03:34:12 VM-16-14-ubuntu sshd[21014]: Disconnected from invalid user virl 111.67.207.25 port 49672 # 末尾有空格
# ^ 以xxx 字符串为开头, $ 以 xxx 字符串结尾,这里 $ 与 ^ 一起用便是指定了这个表达式为匹配的整行字符串,而不是只匹配一部分就好了;? 表示前面这个字符或者(字符串)可以有可以无
$ cat test.txt | sed -E 's/.*Disconnected from (invalid )?user .* [0-9.]+ port [0-9]+ //g'
[preauth]
[preauth]
[preauth]
Aug 29 03:32:52 VM-16-14-ubuntu sshd[20780]: Disconnected from invalid user virl 101.78.9.237 port 42376# 末尾无空格

[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
[preauth]
$ cat test.txt | sed -E 's/.*Disconnected from (invalid )?user .* [0-9.]+ port [0-9]+ \[preauth\]$//g' # 什么时候转义字符,真的有点儿拧不清楚了



Aug 29 03:32:52 VM-16-14-ubuntu sshd[20780]: Disconnected from invalid user virl 101.78.9.237 port 42376# 末尾无空格
Aug 29 03:34:12 VM-16-14-ubuntu sshd[21014]: Disconnected from invalid user virl 111.67.207.25 port 49672 末尾有空格















标签:Disconnected,Wrangling,invalid,sed,user,preauth,整理,Data,port
来源: https://www.cnblogs.com/zhixlin/p/15228910.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有