目标:让 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
不幸的是,它没有写入输出,而是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
有谁知道如何解决这个问题,以便我可以使用 crontab 运行它并更新文件?
答案1
问题似乎是 crontab 可能不知道 arp 命令所在的路径。
我会用:
* * * * * /usr/sbin/arp -n >> results.txt
不过,我会使用 arpwatch 来监控 ARP 变化。它作为守护进程工作,并随着时间的推移在文件中注册 MAC 更改以及更改的纪元时间。它还能够将消息发送到系统日志和电子邮件。
Arpwatch 跟踪以太网/IP 地址配对。它记录系统日志活动并通过电子邮件报告某些更改。 Arpwatch 使用 pcap(3) 侦听本地以太网接口上的 arp 数据包。
举报消息
以下是 arpwatch(1)(和 arpsnmp(1))生成的报告消息的快速列表:
新活动 该以太网/IP 地址对已首次使用六个月或更长时间。
新站 以太网地址以前没有见过。
触发器 以太网地址已从最近看到的地址更改为第二最近看到的地址。 (如果旧的或新的以太网地址是 DECnet 地址并且时间少于 24 小时,则报告的电子邮件版本将被抑制。)
更改的以太网地址 主机切换到新的以太网地址。
系统日志消息
以下是一些系统日志消息;请注意,报告的消息也会记录在系统日志中。
以太网广播 主机的 MAC 以太网地址是广播地址。
ip广播 主机的IP地址是广播地址。
bogon 源 IP 地址不是本地子网的本地地址。
以太网广播 源 mac 或 arp 以太网地址全为 1 或全为 0。
以太网不匹配 源 mac 以太网地址与 arp 数据包内的地址不匹配。
重新使用的旧以太网地址 以太网地址已从最近查看的地址更改为第三个(或更大)最近最少查看的地址。 (这类似于触发器。)
抑制 DECnet 触发器 “触发器”报告被抑制,因为两个地址之一是 DECnet 地址。
文件
/var/lib/arpwatch - 默认目录
arp.dat - 以太网/IP 地址数据库
ethercodes.dat - 供应商以太网阻止列表
答案2
您需要将 更改>
为>>
.仅使用一个>
将在写入文件之前截断文件,使用两个将追加。您可能还想做一些事情来确保文件本身不会变得太大。
答案3
有关的建议arpwatch
很好,但如果您不想走这条路:
我建议创建一个包含以下内容的文件:
#!/bin/sh
arp -n >> results.txt
(请注意,>>
否则第一次运行后您会收到错误消息)。确保它可以执行:
chmod 755 file
然后从 crontab 运行它。