目标:在启动时运行 crontab 将arp
命令的输出记录到 txt 文件中。
> Chrontab:
>
> # daemon's notion of time and timezones.
> #
> # Output of the crontab jobs (including errors) is sent through
> # email to the user the crontab file belongs to (unless redirected).
> #
> # For example, you can run a backup of all your user accounts
> # at 5 a.m every week with:
> # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
> #
> # For more information see the manual pages of crontab(5) and cron(8)
> #
> # m h dom mon dow command
* * * * * arp -n > results.txt
Run Code Online (Sandbox Code Playgroud)
不幸的是,不是写入arp -n
它的输出而是用一个空白文件覆盖 results.txt。
奇怪的是,如果我arp-n > results.txt
在终端中使用,我会得到:
GNU nano 2.2.6 File: results.txt
Address HWtype HWaddress Flags Mask Iface
192.168.42.19 (incomplete) wlan0
192.168.42.14 ether (incomplete) C wlan0
192.168.42.13 (incomplete) wlan0
192.168.42.18 (incomplete) wlan0
192.168.1.1 ether (incomplete) C eth0
192.168.1.25 ether (incomplete) C eth0
192.168.42.12 ether (incomplete) C wlan0
192.168.1.240 ether (incomplete) C eth0
192.168.42.11 (incomplete) wlan0
192.168.42.16 M A wlan0
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题,以便我可以运行它并使用 crontab 更新文件?
问题似乎是 crontab 可能不知道 arp 命令所在的 PATH。
我会用:
* * * * * /usr/sbin/arp -n >> results.txt
Run Code Online (Sandbox Code Playgroud)
但是,我会使用 arpwatch 来监控 ARP 变化。它作为一个守护进程工作,并随着时间的推移在文件中注册 MAC 更改,以及更改的纪元时间。它还能够将消息发送到系统日志和电子邮件。
Arpwatch 跟踪以太网/IP 地址配对。它记录活动并通过电子邮件报告某些更改。Arpwatch 使用 pcap(3) 在本地以太网接口上监听 arp 数据包。
举报讯息
以下是 arpwatch(1)(和 arpsnmp(1))生成的报告消息的快速列表:
新活动 此以太网/IP 地址对已首次使用六个月或更长时间。
新站 以太网地址以前没有见过。
触发器 以太网地址已从最近看到的地址更改为第二次最近看到的地址。(如果旧的或新的以太网地址是 DECnet 地址并且少于 24 小时,报告的电子邮件版本将被抑制。)
更改了以太网地址 主机切换到新的以太网地址。
系统日志消息
以下是一些系统日志消息;请注意,报告的消息也会被系统记录。
以太网广播 主机的 mac 以太网地址是广播地址。
ip broadcast 主机的ip地址为广播地址。
bogon 源 ip 地址不是本地子网的本地地址。
以太网广播源 mac 或 arp 以太网地址全为 1 或全为零。
以太网不匹配 源 mac 以太网地址与 arp 数据包内的地址不匹配。
重用旧以太网地址 以太网地址已从最近看到的地址更改为第三个(或更大)最近最少看到的地址。(这类似于触发器。)
抑制 DECnet 触发器 由于两个地址之一是 DECnet 地址,因此抑制了“触发器”报告。
文件
/var/lib/arpwatch - 默认目录
arp.dat - 以太网/IP 地址数据库
ethercodes.dat - 供应商以太网阻止列表