的一件事我一直喜欢Unix和Linux是如何让我连接一系列命令管道和一起完成很多工作没有很多努力。我可以生成输出,我需要,我需要它。这不仅仅是管道本身的存在,但Linux命令的灵活性。您可以运行命令,选择部分的输出,对结果进行排序或匹配特定的字符串可以削减到你想要的结果。
在这篇文章中,我们将看看几个命令,说明管道的力量和轻松你可以命令如何协同工作。
检查chkrootkit的统计数据
这第一个示例命令开始使用sudo运行chkrootkit命令。这个命令检查rootkit的迹象在您的系统上使用一个详细的过程检测签名相关的已知的rootkit。命令将容易产生超过100行输出。得到的一个非常有用的总结发现,然而,您可以运行一个命令是这样的:
$ sudo chkrootkit | awk的{打印$ (NF-1)" " $ NF}’排序| | uniq - c 1一段时间…2 enp0s25: PF_PACKET (/ usr / sbin /使)1 ' / '21没有找到3没有删除2没有检测到56没有发现41不是感染3测试1 PF_PACKET插座1分/ 0 bash 1可疑文件1 TTY CMD 1 /usr/lib/.build-id /usr/lib/debug/.dwz 1 /var/run/utmp !
上面的命令运行chkrootkit根,只选择在每一行的最后两个字符串的输出,对结果进行排序,然后计算每个双多少次结果返回。虽然这是在没有办法代替看完整的输出,它可以告诉你很多关于系统的状态可发现的rootkit。
在上面的输出中,我们可以很容易地看到,大部分的输出可能是我们希望看到的。“删除”和“发现”很不错,但注意的是41“感染”的消息显然是好消息。单一“可疑文件”消息实际上是“不怀疑文件”并要求看了一眼那个原始输出确认。
的awk表达在整个命令显示最后两个字段。自NF是awk的方式表达的数量字段,NF美元最后一个字段的值和吗$ (NF-1)是前面的字段的值。引号内的空白阻止这些字段被挤在一起。
的排序命令然后排序输出字母数字混合所有的最后一个命令时,uniq - c,每个输出行数多少次出现在每个连续的组在整个输出。
请注意,它有助于熟悉所有的数据是从哪里来的。看chkrootkit直接输出,你可能会看到很多这样的线
ROOTDIR ' / '检查amd的……没有找到检查“:”……不受感染的检查“biff”……没有找到检查“chfn”……不受感染的检查“chsh”……不受感染的检查“cron”……不受感染的检查“crontab”……不受感染的检查“日期”……不是感染检查“杜”……不是感染检查目录名的…… not infected Checking `echo'... not infected Checking `egrep'... not infected Checking `env'... not infected Checking `find'... not infected Checking `fingerd'... not found Checking `gpm'... not found Checking `grep'... not infected
这些线都表示chkrootkit做了很多检查可能的命令感染,但是没有发现问题。晚一点,你可能会看到这些迹象表明可能的恶意软件系统上也不见了。
寻找嗅探器的日志,它可能需要一段时间……没有发现寻找HiDrootkit的默认dir……没有发现寻找t0rn的默认文件和dirs……没有发现寻找t0rn v8违约……没有发现
管道命令提供了一个有用的总结和脚本可以很容易地变成了所以你不必类型它甚至记得每次你想使用它。
# !/bin/bash sudo chkrootkit | awk的{打印$ (NF-1)" " $ NF}’| | uniq - c
命令只花了大约30秒我的系统上运行,这对我来说很容易经常运行这些检查。
用户进程
生成的列表与流程相关的进程id,一些特定用户正在运行,您可以使用这样的命令:
美元ps辅助| grep nemo | grep - v grep | awk{打印$ 2}903665 903674 903680 903695 903703
这个管道命令使用ps辅助列出所有正在运行的进程,把输出缩小到只有那些流程由用户nemo,排除了“grep nemo”命令(因为它不是由nemo)然后减少了上市进程id。如果你想看到的过程,而不是所有的进程id,添加另一个管道和一个wc - l命令。
美元ps辅助| grep nemo | grep - v grep | awk的{打印$ 2}| wc - l 5
如果你正在寻找一个用户登录系统上的控制台,您可能想要管输出列的命令,这样你看到一个屏幕上的所有进程。
美元ps辅助| grep啦| grep - v grep | awk的{打印$ 2}|列4508 4620 4728 4764 4802 4856 4884 4893 5030 6003 4515 4621 4729 4770 4814 4868 4886 4895 5046 897442 4528 4623 4737 4774 4819 4869 4888 4896 5049 897447 4538 4650 4741 4775 4821 4878 4889 4897 5092 897455 4541 4703 4742 4781 4827 4879 4890 4992 5258 904175 4543 4710 4745 4788 4839 4880 4891 5016 5276 904178 4545 4723 4753 4790 4846 4881 4892 5021 5997 904179
总结
可以看到从上面的命令、管道可以帮助你把Linux命令的输出变成一种形式显示正是你想知道的。,不管这些命令会是多么的复杂,你可以拯救他们作为别名或脚本,这样你不需要重新创建它们每次你需要使用它们。