使用stun发现外部ip地址和nat拓扑。

pynat的Python项目详细描述


pypilicense

使用stun(通过网络地址转换器简单遍历udp)发现外部ip地址和nat拓扑。

pynat遵循RFC 3489,并受到 Python 2.x调用了PyStunpynat支持python 2.7及更高版本。

安装

Pynat需要Python2.7或更高版本。

来自Pypi

从命令行运行pip3 install pynat安装PyNAT

注意

在某些Linux系统上,安装可能需要使用根权限运行PIP,或运行pip3 install pynat --user。后者可能需要将~/.local/bin导出到path。

来自github

克隆或下载git repo,导航到目录,然后运行:

python3 setup.py sdist
cd dist
pip3 install pynat-<version>.tar.gz

用法

要获取有关网络拓扑和使用的外部IP/端口的信息,请运行pynat

Network type: UDP Firewall
Internal address: 127.0.0.1:54320
External address: 127.0.0.1:54320

运行pynat -hpynat --help获取更多选项:

usage: pynat [-h] [--source_ip SOURCE_IP] [--source-port SOURCE_PORT]
             [--stun-host STUN_HOST] [--stun-port STUN_PORT]

PyNAT v0.0.0 Discover external IP addresses and NAT topologies using STUN.
Copyright (C) 2018 Ariel Antonitis. Licensed under the MIT License.

optional arguments:
  -h, --help            show this help message and exit
  --source_ip SOURCE_IP
                        The source IPv4 address to bind to.
  --source-port SOURCE_PORT
                        The source port to bind to.
  --stun-host STUN_HOST
                        The STUN host to use for queries.
  --stun-port STUN_PORT
                        The port of the STUN host to use for queries.

在python shell或项目中使用pynat:

from pynat import get_ip_info
topology, ext_ip, ext_port = get_ip_info()

如果未知,还可以获取有关内部IP的信息:

topology, ext_ip, ext_port, int_ip = get_ip_info(include_internal=True)

开发

pynat版本控制函数在MAJOR.MINOR.PATCH.[DEVELOP]模型上。只有稳定的非开发版本才会发布到pypi。因为pynat仍然是一个beta项目,所以MAJOR增量将为0。小增量表示新功能。补丁增量表示现有特征固定的问题。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从Java中的方法返回列表时遇到问题   java如何忽略json字段,并使用Jackson ObjectMapper获取其值以进行映射   spring通过更新其各自java对象的值来映射两个xsd文件   java从HttpClient获取500错误,在浏览器中工作   java使用物理键输入(耳机中的按钮)在安卓中执行一些操作   如何在int数组(java)中追加int?   java Spring RequestParam的默认值等于方法调用   java将JsonLayout添加到log4j2 json配置   Ubuntu上的maven Tomcat6 libs和/usr/share/java   java单元测试Android活动   java获取URL证书的屏幕截图   java如何为自定义类加载器加载的类提供工具?   FB墙上的java错误图片,来自安卓应用程序的反馈帖子(安卓 FB sdk)   从Intellij IDEA内部运行Tomcat时的java差异?   java TDD与不可能的例外   安卓 Java日期表示差异