Linux常用命令history/tcpdump/awk/grep

1. 历史命令回显history

查询是什么时间什么人操作过文件:
echo 'export HISTTIMEFORMAT="%F %T `whoami` "' >> /etc/profile

 ubuntu系统:查询是什么时间什么人登录的ip操作过文件:

export HISTFILESIZE=10000000
export HISTSIZE=1000000
# 实时记录历史命令,默认只有在用户退出之后才会统一记录,很容易造成多个用户间的相互覆盖>。
export PROMPT_COMMAND="history -a"

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ $USER_IP = ":0" ];then
    USER_IP=localhost
fi
export HISTTIMEFORMAT="%F %T `whoami`:$USER_IP "

 

2. 抓包tcpdump

tcpdump -X -s 0 -i any port 8123 -w ./tcpdump/xdrout.pcap

-s 抓报长度,一般设置为0,即65535字节
-i 就是监听的网络接口,是eth0,eth1 还是什么,any 表示所有的网络接口。
port 8123 就是只监听8123 端口的信息。
-w 就是将记录保存在一个指定的文件中,后面自然就是这个文件的地址了。
-X 打印十六进制和ASCII的数据,每一个数据包(减去其链路层报头)

 捕获的pcap包可以用wireshark分析。

3. 文本处理awk

awk '{for(i=1;i<=NF;i++)a[$i]++;} END {for(i in a)print i" = "a[i]}'  test.txt

test.txt

eclipse test one to one
many to many foreign

output:
eclipse = 1
to = 2
test = 1
many = 2
foreign = 1
one = 2

注释:
NF表示单行(记录 )中字段 数,$i表示对应字段 ,假设 文本是 "a b c d a b a" ,a出现3次所以a[a]++执行了3次,a[a]的值增加了3,这个循环完成 后a数组 中为已经读取的行相同内容字段出现次数

for (i in a) 表示 依次迭代a数组 的下标 ,赋值给变量 i,如上例a数组的下标 会是a,b,c,d(顺序是随机的),这四个下标会被按随机顺序赋值给变量 i。
print i"="a[i],打印字段 i和其出现次数a[i]

awk学习 by pspery  转载

 

4. grep

使用扩展正则匹配(-E)规则,排除二进制文件(--binary-file=without-match)检索文件file中的"keyValue"

$ grep -nirE "keyValue" file --binary-file=without-match

--exclude-dir=参数就是为了排除某个目录的,即不包含等号后面的目录,所以我们可以利用此参数去掉.svn的隐藏目录。

可以把--exclude-dir=参数通过加入配置文件 ~/.bashrc (这是bash的当前用户配置文件) 的方法来简化操作,提高效率。

在~/.bashrc文件的末尾添加以下命令:

export GREP_OPTIONS="--exclude-dir=\.svn"

然后保存,执行source ~/.bashrc或者. ~/.bashrc,使修改起作用。

 

`dirname $0` 定位到运行脚本的相对位置

 

posted @ 2017-11-16 11:06  PKICA  阅读(803)  评论(0编辑  收藏  举报