如何在 python 中更改 IP 地址时可视化它们?
Posted
技术标签:
【中文标题】如何在 python 中更改 IP 地址时可视化它们?【英文标题】:How to visualize IP addresses as they change in python? 【发布时间】:2010-10-19 11:51:27 【问题描述】:我编写了一个小脚本,每次我打开一个新的终端窗口时都会收集我的外部 IP 地址,并将它以及当前时间附加到一个文本文件中。我正在寻找一种方法来可视化我的 IP 地址何时/多久更改一次。我在家庭和校园之间来回奔波,可以使用脚本将它们分开,但最好将它们分开可视化。
我经常使用 matplotlib。有什么想法吗?
【问题讨论】:
【参考方案1】:将您的 IP 绘制为the xkcd internet map 上的一个点(或放大地图子集,以更好地显示不同但相邻的 IP)。
绘制与您拥有该 IP 的频率成比例的“堆叠”每个点,并为 IP 着色以使最近的点更亮,最近的点按比例变暗。
【讨论】:
我想知道这是否适用于几组不同的 IP 地址。对我在城里得到的各种动态 IP 有不同的情节。【参考方案2】:“When”是一维时间数据,可以通过时间线很好地显示出来。在较大的时间尺度上,您可能会丢失细节,但大多数“何时”的情节都会有这个缺陷。
对于“频率”,标准的 2d(条形)时间与频率图(按每天/每周/每月划分为桶)将是一种标准方法。移动平均线也可能提供信息。
您可以将时间线和条形图结合起来,放大时可见时间线,缩小时显示频率。
如何在横轴上绘制一个带有时间的条形图,其中每个条的宽度是您的计算机保持特定 IP 地址的时间长度,每个条的高度与宽度成反比?这也将给出何时与多久绘制一次的图。
您还可以将数据解释为pulse density modulated 信号,就像您在 SuperAudio CD 上获得的一样。您可以绘制此图,甚至可以收听数据。由于 IP 更改事件没有明显的时间长度,因此脉冲长度将是一个可调参数。沿着类似的思路,您可以将数据视为方波(三角波、锯齿波等),其中每个 IP 更改事件都是电平转换。听起来很有趣Pure Data 项目。
【讨论】:
【参考方案3】:matplotlib 用户指南中有一节关于在图表上绘制条形以表示范围。我自己从来没有这样做过,但它似乎适合你正在寻找的东西。
【讨论】:
【参考方案4】:假设您指定了终端,我假设您使用的是 UNIX 变体系统。使用 -f 开关和命令行实用程序 tail 可以让您持续监控文件的结尾。您还可以使用 IBM 的 inotify 之类的东西,它可以监视文件更改或 dnotify(并将文件放在它自己的目录中),这通常是大多数发行版的标准配置(然后您可以调用 tail -n 1 来获取最后一行) .一旦行更改,您可以使用 Python 的 time.time() 获取自纪元以来的当前系统时间,并将其从上次更改的时间中减去,然后使用 matplotlib 绘制此差异。我想你可以对时间进行分类 成范围以使您自己更轻松地进行绘图。 1 条表示小于 1 小时的更改间隔,另一个表示 1 到 5 小时之间的更改,依此类推。
如果您不想直接使用它,可以在 here 找到一个 tail -f 的 Python 实现。在检测到文件发生变化时,您可以执行上述操作。
【讨论】:
以上是关于如何在 python 中更改 IP 地址时可视化它们?的主要内容,如果未能解决你的问题,请参考以下文章
上云网关EasyNTS遇到IP冲突时,如何正确更改IP地址?
如何在 MobileFirstServer 中更改 IP 地址中的默认域