Python的Linux Tun/TAP包装器

python-pytun的Python项目详细描述


pytun是一个python模块,您可以很容易地创建tun/tap设备。

许可证:麻省理工学院(见许可证)

安装和依赖项

pip install python-pytundownload this archive安装pytun,然后解压缩 执行python setup.py install。由于pytun是一个C模块,您将需要一个 编译器(例如gcc)和安装在 系统(例如,在类似debian的分发检查中,build-essentialpython-dev存在)。除了python之外没有其他依赖项 标准库。

文档

注意:在大多数发行版中,您需要是root用户才能创建tun/tap设备。

要创建tun设备:

from pytun import TunTapDevice

tun = TunTapDevice()

创建抽头设备:

from pytun import TunTapDevice, IFF_TAP

tap = TunTapDevice(flags=IFF_TAP)

要使用自定义名称创建tun/tap设备,请使用name关键字:

tun = TunTapDevice(name='mytun')

您可以直接获取/设置设备的一些参数:

print tun.name
tun.addr = '10.8.0.1'
tun.dstaddr = '10.8.0.2'
tun.netmask = '255.255.255.0'
tun.mtu = 1500

如果设备是轻触,您还可以获取/设置其mac地址:

tap.hwaddr = '\x00\x11\x22\x33\x44\x55'
print tap.hwaddr

要使设备持久化,请执行以下操作:

tun.persist(True)

启动设备:

tun.up()

要关闭设备:

tun.down()

要读/写设备,请使用方法read(size)write(buf)

buf = tun.read(tun.mtu)
tun.write(buf)

关闭设备:

tun.close()

您还可以将TunTapDevice对象与期望 fileno()方法(例如select()

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

推荐PyPI第三方库


热门话题
java如何分割字符串并将其存储在列表或映射中?   java是否存在(i!=i)将被计算为true的场景?   C中ObjectInputStream和ObjectOutputStream的java等价物#   java确定一个球体是否完全被放置在其周围的其他球体包围   在Java中,检查字符是否为元音的最佳方法是什么?   java有人能帮我在fighter类中使用攻击方法吗   java将列值映射到枚举第一个参数   java Hibernate获取结果集中行的位置   java JComboBox不显示元素   java定时注释和自定义StringResolver   java如何计算两个DateTime对象之间的差异(以天为单位)?   java Hibernate尝试更新只读对象的版本号   c#在java中检索cookieContainer中的数据   javascript我的网站在3次操作后无限期加载   无法创建HornetQ:java的网络连接。网SocketTimeoutException:连接超时   不可变类的java策略这是矛盾吗?   Java中图形的空间高效表示法?   带Void的java模板形式参数   java在“从内部发送邮件”中添加标题。就像“堆栈溢出”<donotreply@stackoverflow.email>"