用shell脚本如何将log文件中的内容导入到一个新的log中

zzgsoul1234 2014-07-06 11:53:36
#!/bin/sh
read stuff
SERVER=`echo $stuff |awk ‘{print $4}’`
echo $stuff >> /var/log/login_log/$SERVER.log

在网上找到这样的一个脚本。但是运行不成功。
我想实现的功能是把syslog中包含patrol和10.188.238.40这样的ip字段的数据都导入到一个新的log中

日志中会有如下的信息,我就想把这一整行的信息都导入到新的log中。
Jul 4 14:51:31 zmng2 sshd[26192]: Received disconnect from 10.188.238.40: 11: The user disconnected the application
Jul 4 14:51:40 zmng2 sshd[26429]: Accepted password for patrol from 10.188.238.40 port 3651 ssh2
各位大神,这个该如何实现?

ps:我对shell脚本只是懂那么一丢丢。最好来点注释。谢谢了。
...全文
564 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzgsoul1234 2014-07-08
  • 打赏
  • 举报
回复
引用 15 楼 ljc007 的回复:
引用
我想实现的功能是把syslog中包含patrol和10.188.238.40这样的ip字段的数据都导入到一个新的log中 日志中会有如下的信息,我就想把这一整行的信息都导入到新的log中。 Jul 4 14:51:31 zmng2 sshd[26192]: Received disconnect from 10.188.238.40: 11: The user disconnected the application Jul 4 14:51:40 zmng2 sshd[26429]: Accepted password for patrol from 10.188.238.40 port 3651 ssh2 各位大神,这个该如何实现?
grep -E "patrol|10\.188\.238\.40" oldlog > newlog 红色和蓝色部分表示需要查找的字符串,而且是“或”的关系,只要包含其中某一个字符串,就把它找出来。 中间那个竖线就表示“或” -E 是开启扩展正则,让它能够支持“或”这种表达方式
我只想说,您给我的回复太细致了。非常感谢。
zzgsoul1234 2014-07-08
  • 打赏
  • 举报
回复
引用 13 楼 network__yang 的回复:
这种简单的shell脚本, 没事学习一下shell就可以搞定。 [quote=引用 10 楼 brookmill 的回复:] grep patrol messages | grep "192\.168\.191\.254">newlog 导出所有 既包含patrol又包含这个IP 的行 grep messages "192\.168\.191\.254">newlog 导出所有 包含这个IP 的行,不管有没有patrol
[/quote] 恩,学习下~!
ljc007 2014-07-08
  • 打赏
  • 举报
回复
引用
我想实现的功能是把syslog中包含patrol和10.188.238.40这样的ip字段的数据都导入到一个新的log中 日志中会有如下的信息,我就想把这一整行的信息都导入到新的log中。 Jul 4 14:51:31 zmng2 sshd[26192]: Received disconnect from 10.188.238.40: 11: The user disconnected the application Jul 4 14:51:40 zmng2 sshd[26429]: Accepted password for patrol from 10.188.238.40 port 3651 ssh2 各位大神,这个该如何实现?
grep -E "patrol|10\.188\.238\.40" oldlog > newlog 红色和蓝色部分表示需要查找的字符串,而且是“或”的关系,只要包含其中某一个字符串,就把它找出来。 中间那个竖线就表示“或” -E 是开启扩展正则,让它能够支持“或”这种表达方式
ljc007 2014-07-08
  • 打赏
  • 举报
回复
引用
我在用我自己的虚拟机做的测试。

这样就就可以把关于192.168.191.254的内容放入到newlog中么?

找了个文件日志文件。内容如下:
Jul 6 08:32:26 bogon dhclient: DHCPOFFER from 192.168.191.254
Jul 6 08:32:26 bogon dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67
Jul 6 08:32:26 bogon dhclient: DHCPACK from 192.168.191.254
Jul 6 08:32:26 bogon NET[25676]: /sbin/dhclient-script : updated /etc/resolv.conf
Jul 6 08:32:26 bogon dhclient: bound to 192.168.191.132 -- renewal in 687 seconds.
Jul 6 08:44:43 bogon dhclient: DHCPREQUEST on eth0 to 192.168.191.254 port 67
Jul 6 08:44:43 bogon dhclient: DHCPACK from 192.168.191.254


grep "192\.168\.191\.254" oldlog > newlog
红色部分是需要查找的字符串,由于点号是特殊字符,所以要使用斜线转义。
蓝色部分是从哪个文件里面查找
绿色部分是查找的结果保存到哪个文件
ljc007 2014-07-08
  • 打赏
  • 举报
回复
引用 18 楼 u011842770 的回复:
就是先把关于patrol的内容或者192.168.191.254的内容先导出,然后再把这些内容在源文件中删除? 现在给出的这个,只是导出的功能。
删除方法1: sed -i '/patrol/d' oldlog 删除方法2: grep -v "patrol" oldlog > tmplog mv tmplog oldlog
zzgsoul1234 2014-07-08
  • 打赏
  • 举报
回复
引用 14 楼 ljc007 的回复:
引用
我在用我自己的虚拟机做的测试。 这样就就可以把关于192.168.191.254的内容放入到newlog中么? 找了个文件日志文件。内容如下: Jul 6 08:32:26 bogon dhclient: DHCPOFFER from 192.168.191.254 Jul 6 08:32:26 bogon dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67 Jul 6 08:32:26 bogon dhclient: DHCPACK from 192.168.191.254 Jul 6 08:32:26 bogon NET[25676]: /sbin/dhclient-script : updated /etc/resolv.conf Jul 6 08:32:26 bogon dhclient: bound to 192.168.191.132 -- renewal in 687 seconds. Jul 6 08:44:43 bogon dhclient: DHCPREQUEST on eth0 to 192.168.191.254 port 67 Jul 6 08:44:43 bogon dhclient: DHCPACK from 192.168.191.254
grep "192\.168\.191\.254" oldlog > newlog 红色部分是需要查找的字符串,由于点号是特殊字符,所以要使用斜线转义。 蓝色部分是从哪个文件里面查找 绿色部分是查找的结果保存到哪个文件
大神,我按照这个方式,成功了。但是原先的syslog中,还是有关于patrol的内容或者有192.168.191.254这个ip的内容。 能把这些删除么? 就是先把关于patrol的内容或者192.168.191.254的内容先导出,然后再把这些内容在源文件中删除? 现在给出的这个,只是导出的功能。
brookmill 2014-07-07
  • 打赏
  • 举报
回复
引用 11 楼 u011842770 的回复:
我这个是用自己的虚拟机测试的。生产环境是HP-UNIX。那个syslog里面就有patrol。
明白了。那就用8楼那个应该就可以。
zzgsoul1234 2014-07-07
  • 打赏
  • 举报
回复
引用 9 楼 brookmill 的回复:
[quote=引用 8 楼 u011842770 的回复:] 找了个文件日志文件。内容如下: Jul 6 08:32:26 bogon dhclient: DHCPOFFER from 192.168.191.254 Jul 6 08:32:26 bogon dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67 Jul 6 08:32:26 bogon dhclient: DHCPACK from 192.168.191.254 Jul 6 08:32:26 bogon NET[25676]: /sbin/dhclient-script : updated /etc/resolv.conf Jul 6 08:32:26 bogon dhclient: bound to 192.168.191.132 -- renewal in 687 seconds. Jul 6 08:44:43 bogon dhclient: DHCPREQUEST on eth0 to 192.168.191.254 port 67 Jul 6 08:44:43 bogon dhclient: DHCPACK from 192.168.191.254
你不是还要包含patrol吗?这里也没有patrol呀[/quote] 我这个是用自己的虚拟机测试的。生产环境是HP-UNIX。那个syslog里面就有patrol。
brookmill 2014-07-07
  • 打赏
  • 举报
回复
grep patrol messages | grep "192\.168\.191\.254">newlog 导出所有 既包含patrol又包含这个IP 的行 grep messages "192\.168\.191\.254">newlog 导出所有 包含这个IP 的行,不管有没有patrol
brookmill 2014-07-07
  • 打赏
  • 举报
回复
引用 8 楼 u011842770 的回复:
找了个文件日志文件。内容如下: Jul 6 08:32:26 bogon dhclient: DHCPOFFER from 192.168.191.254 Jul 6 08:32:26 bogon dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67 Jul 6 08:32:26 bogon dhclient: DHCPACK from 192.168.191.254 Jul 6 08:32:26 bogon NET[25676]: /sbin/dhclient-script : updated /etc/resolv.conf Jul 6 08:32:26 bogon dhclient: bound to 192.168.191.132 -- renewal in 687 seconds. Jul 6 08:44:43 bogon dhclient: DHCPREQUEST on eth0 to 192.168.191.254 port 67 Jul 6 08:44:43 bogon dhclient: DHCPACK from 192.168.191.254
你不是还要包含patrol吗?这里也没有patrol呀
zzgsoul1234 2014-07-07
  • 打赏
  • 举报
回复
引用 6 楼 brookmill 的回复:
[quote=引用 5 楼 u011842770 的回复:] 是已经有syslog这个文件了。然后从syslog中把数据放到一个新的log中的。syslog是已经有的
那就不用脚本了,直接把1楼那一行在shell里运行就好了。你可以先把syslog复制出来,或者摘一部分出来先试试[/quote] 直接下面这种就可以么? #! /bin/sh grep patrol messages | grep "192\.168\.191\.254">newlog 我在用我自己的虚拟机做的测试。 这样就就可以把关于192.168.191.254的内容放入到newlog中么? 找了个文件日志文件。内容如下: Jul 6 08:32:26 bogon dhclient: DHCPOFFER from 192.168.191.254 Jul 6 08:32:26 bogon dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67 Jul 6 08:32:26 bogon dhclient: DHCPACK from 192.168.191.254 Jul 6 08:32:26 bogon NET[25676]: /sbin/dhclient-script : updated /etc/resolv.conf Jul 6 08:32:26 bogon dhclient: bound to 192.168.191.132 -- renewal in 687 seconds. Jul 6 08:44:43 bogon dhclient: DHCPREQUEST on eth0 to 192.168.191.254 port 67 Jul 6 08:44:43 bogon dhclient: DHCPACK from 192.168.191.254
zzgsoul1234 2014-07-07
  • 打赏
  • 举报
回复
引用 6 楼 brookmill 的回复:
[quote=引用 5 楼 u011842770 的回复:] 是已经有syslog这个文件了。然后从syslog中把数据放到一个新的log中的。syslog是已经有的
那就不用脚本了,直接把1楼那一行在shell里运行就好了。你可以先把syslog复制出来,或者摘一部分出来先试试[/quote] 我现在试试看。
brookmill 2014-07-07
  • 打赏
  • 举报
回复
引用 5 楼 u011842770 的回复:
是已经有syslog这个文件了。然后从syslog中把数据放到一个新的log中的。syslog是已经有的
那就不用脚本了,直接把1楼那一行在shell里运行就好了。你可以先把syslog复制出来,或者摘一部分出来先试试
zzgsoul1234 2014-07-07
  • 打赏
  • 举报
回复
引用 4 楼 brookmill 的回复:
那是我理解错了,我以为已经有了syslog然后把里面的内容导出。 我恐怕帮不上这个忙了,我连syslog是什么、怎么生成的都不知道。
是已经有syslog这个文件了。然后从syslog中把数据放到一个新的log中的。syslog是已经有的
brookmill 2014-07-07
  • 打赏
  • 举报
回复
那是我理解错了,我以为已经有了syslog然后把里面的内容导出。 我恐怕帮不上这个忙了,我连syslog是什么、怎么生成的都不知道。
zzgsoul1234 2014-07-07
  • 打赏
  • 举报
回复
引用 1 楼 brookmill 的回复:
是这个意思吗? grep patrol syslog | grep "10\.188\.238\.40" > newlog
您最好给我个shell 脚本。然后我试试运行。这块我是真心不大懂。
zzgsoul1234 2014-07-07
  • 打赏
  • 举报
回复
引用 1 楼 brookmill 的回复:
是这个意思吗? grep patrol syslog | grep "10\.188\.238\.40" > newlog
是的,但是如何将这些内容不保存在syslog。直接将这些内容放在newlog中呢?大神你会么
夏天__ 2014-07-07
  • 打赏
  • 举报
回复
这种简单的shell脚本, 没事学习一下shell就可以搞定。
引用 10 楼 brookmill 的回复:
grep patrol messages | grep "192\.168\.191\.254">newlog 导出所有 既包含patrol又包含这个IP 的行 grep messages "192\.168\.191\.254">newlog 导出所有 包含这个IP 的行,不管有没有patrol
brookmill 2014-07-06
  • 打赏
  • 举报
回复
是这个意思吗? grep patrol syslog | grep "10\.188\.238\.40" > newlog

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧