当有人连接到我的本地网络时通知,ARP,通知文件

当有人连接到我的本地网络时通知,ARP,通知文件


我有一个关于 Ubuntu 12.04 LTS 桌面的问题 - 通知(来回播放音乐时与 Rhythmbox 应用程序相同的通知),从技术上讲,如果我没记错的话,它应该称为“freedesktop.Notifications.service”。我只想在我的某个设备(例如笔记本电脑、手机、平板电脑)连接到我的本地网络时添加通知。我的配置如下:

我有一个无线路由器。我的路由器通过有线直接连接到我的台式电脑,我使用 LAN,其他设备通过 WI-FI 连接。

举个例子,假设:

我的路由器的 IP 地址:192.168.1.1 和 MAC 地址 XX:XX:XX:XX:XX:XX

我——作为服务器- 192.168.1.101 和 MAC 地址 YY:YY:YY:YY:YY:YY

手机- 192.168.1.102 和 MAC 地址 ZZ:ZZ:ZZ:ZZ:ZZ:ZZ

笔记本电脑- 192.168.1.103 和 MAC 地址 KK:KK:KK:KK:KK:KK

  • 我想要做的很简单;将这些 IP 地址及其 MAC 地址添加到地址解析协议最后修改通知文件,每当这些设备连接到我的本地网络时,我都会收到通知。就是这样。

附言:我说的是“ARP”。不过,我不确定它是否合适,我只是假设它与ARP 配置文件, 和通知文件. 任何使用终端或其他应用程序的建议都是可以接受的。

如果有人能帮助我,我将不胜感激。

答案1

您可以使用发送通知,notify-send yourmessage但您想要做的事情有点奇怪。

您的路由器负责处理连接,除非设备实际连接/与您的计算机交互,否则您的计算机不会记录或注意到与您的网络的连接。当然,您可以通过定期扫描网络来制作监视器,例如:

nmap -sn 192.168.1.*

然后从这里读取你的数据(或 arp,因为现在你可以在那里找到它们)。但基本上监控连接的设备是你的路由器,而不是你的电脑。

如果您的路由器支持此功能,您可以将路由器的日志解析到 PC 的系统日志中。现在,当建立连接时,您会在系统日志中收到一条消息,然后您可以根据需要将其发送到桌面环境。

但要回答这个问题,将一个脚本添加到您的 cron 中,该脚本将执行 nmap -sn,将其传送到临时文件,然后使用 diff 将其与之前的情况进行比较。diff out 表示离线,diff in 表示在线。

粗略的例子(每次运行仅处理第一个 IP 变化):

#!/bin/bash
#
#Script to monitor the network and put changes to notification
#
#Save previous scan
cp scan.txt previousscan.txt
#get numeric list of online hosts
nmap -n -sn 192.168.178.* > scan.txt
#collect the difference, only the lines with ip-numbers
message=$(diff previousscan.txt scan.txt | grep 192)
#get first char which indicates if the host came up or went away
iostring="${message:0:1}"
#get first ip-number from the list
computer="${message:23:17}"

#show ip-number in notify if host came up
if [ "$iostring" = \> ]; then
        notify-send "$computer online"
        fi
#show ip-number in notify if host went away
if [ "$iostring" = \< ]; then
        notify-send "$computer offline"
        fi

相关内容