如何制作Mininet Python脚本的可执行程序包?

问题描述 投票:0回答:1

如何制作Mininet Python脚本的可执行程序包?

我有mininet自定义拓扑python脚本,我需要在Linux上使其可执行。

我在ubuntu-Pyinstaller中将其设置为可执行文件,但在运行可执行文件时出现以下错误:

ubuntu@sdnhubvm:~/Desktop/tp/dist[14:59]$ **sudo ./tp**
Traceback (most recent call last):
  File "tp.py", line 5, in <module>
**ImportError: No module named mininet.net**
[26355] Failed to execute script tp

我可以使用以下命令成功运行脚本,而不会出现任何错误:

sudo python tp.py

下面是脚本:

#!/usr/bin/python



from mininet.net import Mininet
from mininet.node import Node
from mininet.link import TCLink
from mininet.log import  setLogLevel, info
from threading import Timer
from mininet.util import quietRun
from time import sleep
from mininet.cli import CLI




def TP(cname='controller', cargs='-v ptcp:'):

    "Create network using Open vSwitch and ODL Controller in Mininet."


    info( "*** Creating nodes\n" )
    controller = Node( 'c0', inNamespace=False )
    s1 = Node( 's1', inNamespace=False )
    s2 = Node( 's2', inNamespace=False )
    h1 = Node( 'h1' )
    h2 = Node( 'h2' )


    info( "*** Creating links\n" )
    TCLink( h1, s1 )
    TCLink( s1, s2 )
    TCLink( s2, h2 )


    info( "*** Configuring Hosts\n" )

    h1.setIP( '192.168.100.1/24' )
    h2.setIP( '192.168.100.2/24' )



    info( "*** Starting network using Open vSwitch\n" )

    s1.cmd( 'ovs-vsctl del-br dp0' )
    s1.cmd( 'ovs-vsctl add-br dp0' )
    s2.cmd( 'ovs-vsctl del-br dp1' )
    s2.cmd( 'ovs-vsctl add-br dp1' )

    controller.cmd( cname + ' ' + cargs + '&' )          

    for intf in s1.intfs.values():

        print intf

        print s1.cmd( 'ovs-vsctl add-port dp0 %s' % intf )



    for intf in s2.intfs.values():

        print intf

        print s2.cmd( 'ovs-vsctl add-port dp1 %s' % intf )



    # Note: controller is ODL 


    s1.cmd( 'ovs-vsctl set-controller dp0 tcp:127.0.0.1:6633' )

    s2.cmd( 'ovs-vsctl set-controller dp0 tcp:127.0.0.1:6633' )



    info( '*** Waiting for switches to connect with controller' )

    while 'is_connected' not in quietRun( 'ovs-vsctl show' ):

        sleep( 1 )

        info( '.' )

    info( '\n' )


    info( "*** Running test\n" )
    h1.cmdPrint( 'ping -c 10 ' + h2.IP() )

    info( "*** Running iperf test Between h1 and h2\n" )
    print "iperf: h1--s1--s2--h2"

    h2.cmd('iperf -s &')
    h1.cmdPrint('iperf -c 192.168.100.2 -t 10')


    info( "*** Stopping network\n" )

    controller.cmd( 'kill %' + cname )

    s1.cmd( 'ovs-vsctl del-br dp0' )

    s1.deleteIntfs()

    s2.cmd( 'ovs-vsctl del-br dp1' )

    s2.deleteIntfs()

    info( '\n' )



if __name__ == '__main__':

    global net

    setLogLevel( 'info' )

    info( '*** Test Network Script \n' )

    Mininet.init()

    TP()

请告知我如何在Linux中制作此mininet-python脚本可执行包以满足要求?

谢谢

python ubuntu pyinstaller executable mininet
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.