修改arpwatch使通知邮件主题显示IP地址(我的CentOS 源码包修改实例)

作者:Sender Su  来源:原创内容  发布日期:2014-11-19  最后修改日期:2014-11-19

一直在用arpwatch这个服务,但它发通知邮件时只有在IP地址能解释为主机名时才在邮件主题中出现,对于不能解释为主机名的IP地址则不显示。这样实在不方便。因为对于内网,并不一定允许客户端自动登记到DNS。于是着手进行小修改。

1、准备一套CentOS的开发环境。这个不啰嗦了。

2、下载源码包。需要注意,对于CentOS 5,arpwatch是和tcpdump、libpcap的源码放在一个包里面的。因此,我们首先要下载tcpdump 的源码包:

wget ftp://frisal.switch.ch/pool/4/mirror/redhat/linux/enterprise/5Server/en/os/SRPMS/tcpdump-3.9.4-15.el5.src.rpm

3、安装源码包:

rpm -ivh  tcpdump-3.9.4-15.el5.src.rpm

4、转到临时文件夹,解压arpwatch的源码包

cd /tmp
tar zxf /usr/src/redhat/SOURCES/arpwatch-2.1a13.tar.gz

5、修改代码,文件名是report.c。修改前先备份。假设备份文件名为report.old.c,修改完后通过如下命令生成patch文件。

diff -Naur report.old.c report.c > arpwatch-report.patch

6、复制 arpwatch-report.patch 文件到/usr/src/redhat/SOURCES

cp arpwatch-report.patch /usr/src/redhat/SOURCES

7、修改patch文件,最后得到如下:

[root@centos5builder SOURCES]# cat arpwatch-report.patch
--- arpwatch-2.1a10/report.c    2014-11-16 22:17:40.000000000 +0800
+++ arpwatch-2.1a10/report.c    2014-11-16 22:18:08.000000000 +0800
@@ -306,7 +306,7 @@
        if (!isdigit(*hn))
                (void)fprintf(f, "Subject: %s (%s)\n", title, hn);
        else {
-               (void)fprintf(f, "Subject: %s\n", title);
+               (void)fprintf(f, "Subject: %s (%s)\n", title, intoa(a));
                hn = unknown;
        }
        (void)putc('\n', f);

8、修改/usr/src/redhat/SPECS/tcpdump.spec,加入arpwatch-report.patch的处理。注意是两个地方,前面的定义和后面的执行。修改前后的比较结果如下:

--- tcpdump.spec        2009-11-11 23:28:34.000000000 +0800
+++ tcpdump.spec     2014-11-19 22:20:20.000000000 +0800
@@ -57,6 +57,7 @@
 Patch41: arpwatch-addr.patch
 Patch42: arpwatch-dir-man.patch
 Patch43: arpwatch-ethcodes.patch.bz2
+Patch44: arpwatch-report.patch

 Patch50: libpcap-shared.patch
 Patch52: tcpdump-3.7.2-s390.patch
@@ -189,6 +190,7 @@
 %patch41 -p1 -b .mailuser
 %patch42 -p1 -b .dirman
 %patch43 -p1
+%patch44 -p1 -b .report
 popd

 pushd tcpslice

9、重建包,等候重建过程完成。

rpmbuild -ba ./tcpdump.spec

10、安装。

rpm -ev arpwatch-2.1a13-22.el5.x86_64
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh  arpwatch-2.1a13-22.x86_64.rpm

11、还原rpm备份的配置文件,其中,arp.dat是运行记录,不还原也会重新生成;arpwatch是运行参数,如果之前自己改动过就要还原。

cd /var/lib/arpwatch/
mv arp.dat.rpmsave  arp.dat
提示覆盖选择是。

cd /etc/sysconfig
mv arpwatch.rpmsave arpwatch
提示覆盖选择是。

12、启用和启动服务

chkconfig arpwatch on
service arpwatch start

CentOS 6 大同小异。差异点:

1、source rpm 安装后位置在/root/rpmbuild下,创建的包也会放在这个位置下面。

2、arpwatch有独立的src包,不再和tcpdump捆绑。

3、由于有独立的src包,因此配置文件名是arpwatch.spec而不是tcpdump.spec,但修改的内容基本相同。

本栏目相关
  •  2012-06-07 修改CentOS发行信息以绕过Dell服务器BIOS更新和DSET支持工具的操作系统检查
  •  2014-11-19 修改arpwatch使通知邮件主题显示IP地址(我的CentOS 源码包修改实例)
  • 本站微信订阅号:

    微信订阅号二维码

    本页网址二维码:

    本栏目热门内容
  • Acrobat虚拟PDF打印机执行打印时挂起,解决办法竟然...
  • LINKSYS交换机登录WEB界面显示不正确的解决方法
  • 又一次RAID 5阵列故障记录
  • 解决VMware vSphere ESXi 5.0 Update 1 中虚机不能...
  • 修改CentOS发行信息以绕过Dell服务器BIOS更新和DSET...
  • 解决虚拟化运行的 Windows Server 2003 标准版出现...
  • Windows Server 2008 重命名域和域控制器
  • Intel Nehalem CPU Errata 导致 VMWare ESXi(vSpher...
  • 一次很精神的电脑组装过程记录(但不是自己的电脑)...
  • 解决MySQL Cluster 备份总是失败,提示文件已存在的...
  • MegaCli安装及使用杂记
  • 解决WSUS显示客户端不全的问题
  • 解决 VMWare vSphere 6 客户端无法修改用户密码
  • 解决Windows Server 2008 R2域控制器显示无法连接到...
  • 本站服务器RAID 5阵列双硬盘失效挽救记录
  • 网站数据库从MySQL 5.0升级到5.6的记录
  • 解决MariaDB使用Percona XtraBackup增量备份出错
  • DELL PowerEdge 820 报CPU3 INTERNAL ERROR 的解决...
  • Linux 下的分区调整工具GParted实战
  • 修改arpwatch使通知邮件主题显示IP地址
  • 程序员漫画:如何用8种不同的编程语言去解救公主
  • 解决Samba WINS服务的错误解释问题
  • 解决很好用的多合一即时通信软件pidgin的崩溃问题
  • 使用 GParted 进行虚拟机硬盘分区调整操作
  • 解决Squid代理HTTP时在浏览器出现Content Encoding ...
  • 用Delphi编写使用到ADO的DLL的一些问题
  • 网站简单改版
  • 索尼系列手提电脑备份失败,出现700错误的解决办法
  • Dell R900服务器 BMC firmware incompatible with C...
  • 更多...