質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Network Simulator

The Network Simulator

Q&A

解決済

1回答

1879閲覧

Mininetで実行したiperfの出力をコマンドプロンプト上に表示させたい

man_

総合スコア45

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Network Simulator

The Network Simulator

0グッド

0クリップ

投稿2021/07/15 05:53

#やりたいこと
pythonでMininetのトポロジーを構築し、iperfをノード上で実行します。
そこで、ノードで実行したiperfの出力をコマンドプロンプト上に表示させたいです。

#困っていること
プログラム上のh2_pidで実行している"iperf -c ~"のコマンドを実行した際の出力をコマンドプロンプト上に表示させたいのですが、iperfの出力が表示されません。
そこで、iperfの出力をコマンドプロンプト上に表示させるためには、どこを修正する必要があるのでしょうか?
有識者の方々、ご教授の程よろしくお願いします。

プログラム

現在のプログラムを示します。

python

1#!/usr/bin/python 2 3from mininet.topo import Topo 4from mininet.net import Mininet 5from mininet.node import CPULimitedHost 6from mininet.link import TCLink 7from mininet.util import dumpNodeConnections 8from mininet.log import setLogLevel 9import time 10import subprocess 11 12class SingleSwitchTopo(Topo): 13 "Single switch connected to n hosts." 14 def __init__(self, n=2, **opts): 15 Topo.__init__(self, **opts) 16 hosts=[] 17 for h in range(n): 18 # Each host gets 50%/n of system CPU 19 hosts.append(self.addHost('h%s' % (h + 1), 20 cpu=.5/n)) 21 # 10 Mbps, 5ms delay, 10% loss, 1000 packet queue 22 self.addLink(hosts[0], hosts[1], 23 bw=10, delay='5ms', loss=0, max_queue_size=1000, use_htb=True) 24 25def perfTest(): 26 "Create network and run simple performance test" 27 topo = SingleSwitchTopo(n=2) 28 net = Mininet(topo=topo, 29 host=CPULimitedHost, link=TCLink) 30 net.start() 31 h1, h2 = net.get('h1', 'h2') 32 33 h1_dmp = h1.popen('tcpdump', '-x', '-tt', '-nn', '-Z', 'root', '-B', '1000', '-w', 'dump/sender.pcap') 34 h2_dmp = h2.popen('tcpdump', '-x', '-tt', '-nn', '-Z', 'root', '-B', '1000', '-w', 'dump/receiver.pcap') 35 36 h1_pid = h1.popen('iperf', '-s', '-p', '5001') 37 h2_pid = h2.popen(['iperf', '-c', h1.IP(), '-p', '5001', '-t', '30','-Z', 'cubic'],stdout=subprocess.PIPE,stderr = subprocess.STDOUT) 38 39 time.sleep(30) 40 41 h1_pid.kill() 42 h1_dmp.kill() 43 h2_pid.kill() 44 h2_dmp.kill() 45 net.stop() 46 47if __name__ == '__main__': 48 setLogLevel('info') 49 perfTest()

#出力結果

*** Creating network *** Adding controller *** Adding hosts: h1 h2 *** Adding switches: *** Adding links: (10.00Mbit 5ms delay 0.00000% loss) (10.00Mbit 5ms delay 0.00000% loss) (h1, h2) *** Configuring hosts h1 (cfs 75000/100000us) h2 (cfs 75000/100000us) *** Starting controller c0 *** Starting 0 switches *** Stopping 1 controllers c0 *** Stopping 1 links . *** Stopping 0 switches *** Stopping 2 hosts h1 h2 *** Done

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

pythonのプログラム上で標準出力することを忘れていました。
修正後のプログラムを示します。

python

1#!/usr/bin/python 2 3from mininet.topo import Topo 4from mininet.net import Mininet 5from mininet.node import CPULimitedHost 6from mininet.link import TCLink 7from mininet.util import dumpNodeConnections 8from mininet.log import setLogLevel 9import time 10import subprocess 11import sys 12 13class SingleSwitchTopo(Topo): 14 "Single switch connected to n hosts." 15 def __init__(self, n=2, **opts): 16 Topo.__init__(self, **opts) 17 hosts=[] 18 for h in range(n): 19 # Each host gets 50%/n of system CPU 20 hosts.append(self.addHost('h%s' % (h + 1), 21 cpu=.5/n)) 22 # 10 Mbps, 5ms delay, 10% loss, 1000 packet queue 23 self.addLink(hosts[0], hosts[1], 24 bw=10, delay='5ms', loss=0, max_queue_size=1000, use_htb=True) 25 26def perfTest(): 27 "Create network and run simple performance test" 28 topo = SingleSwitchTopo(n=2) 29 net = Mininet(topo=topo, 30 host=CPULimitedHost, link=TCLink) 31 net.start() 32 h1, h2 = net.get('h1', 'h2') 33 34 35 h1_dmp = h1.popen('tcpdump', '-x', '-tt', '-nn', '-Z', 'root', '-B', '1000', '-w', 'dump/sender.pcap') 36 h2_dmp = h2.popen('tcpdump', '-x', '-tt', '-nn', '-Z', 'root', '-B', '1000', '-w', 'dump/receiver.pcap') 37 38 h1_pid = h1.popen('iperf', '-s', '-p', '5001') 39 h2_pid = h2.popen(['iperf', '-c', h1.IP(), '-p', '5001', '-t', '30','-i', '1','-Z', 'cubic'],stdout=subprocess.PIPE,stderr = subprocess.STDOUT) 40 for line in iter(h2_pid.stdout.readline, b''): 41 print(line.rstrip().decode('utf8')) 42 sys.stdout.flush() 43 #time.sleep(30) 44 45 h1_pid.kill() 46 h1_dmp.kill() 47 h2_pid.kill() 48 h2_dmp.kill() 49 net.stop() 50 51if __name__ == '__main__': 52 setLogLevel('info') 53 perfTest()

投稿2021/07/15 06:51

man_

総合スコア45

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問