linux - Bash Grep 和发送

标签 linux bash shell awk grep

我是 bash 的新手,正在尝试了解它。

我有以下内容:

Sep 18 21:05:40 host kernel: Firewall: *Port Flood* IN=venet0 OUT= MAC= SRC=118.223.69.254 DST=10.0.0.1 LEN=40 TOS=0x00 PREC=0x00 TTL=244 ID=9398 PROTO=TCP SPT=9876 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0

如何提取 SRC IP 并将其通过管道传输到 csf -d {IP HERE}

我会用类似的东西

sed -e 's/\([0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+\) .*$/\1/'/var/log/messages 对吗?

编辑:

因为 SPT= 是所有名称,我可以提取它并获取 IP 吗?

最佳答案

像下面这样的东西应该可以工作:

sed -n 's/.*SRC=\([.0-9]*\).*/\1/p' /var/log/messages | xargs csf -d

xargs 会将来自标准输入的参数附加到命令中。请注意,我的正则表达式匹配 IP 地址前后带有 .* 的整行,因此当您进行替换时,剩下的就是 IP。

通过使用 -n 选项并将 p 添加到 sed 替换的末尾,只会打印与正则表达式匹配的行。

关于linux - Bash Grep 和发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481792/

相关文章:

linux - HID 读取()命令

c++ - 如何在内部使用 C++ 异常并可以在旧平台上运行的 linux x64 上创建共享库对象?

linux - 删除 xinetd 导致 plesk 删除

bash - 在 Bash 中包含多个带引号的变量

linux - 当 grep 返回结果时重新启动程序

linux - 执行当前目录中的 shell 脚本,而不是 $PATH 中的脚本

bash - 组合行时相当于 PHP 内爆的终端命令

linux - 在 bash 脚本中找不到检测命令

android - 亚行 shell :/sbin/sh: command: not found

python - 读取环境/shell 变量