结束iperf3服务器
Ending iperf3 server
基于 this 答案,如何在 iperf3
中完成此操作。通过 iperf3
手册页和文档,似乎 -t
选项不再存在。在一段时间后或者如果一段时间内没有客户端存在,我可以实施哪些其他方法来终止服务器进程?有没有比 运行 在后台使用 bash 脚本在一定时间后终止服务器更好/更简单的方法?
目前没有办法让 iperf3 服务器在一段时间后或者没有客户端时死机。
您发布的 link 提到希望在测试后完成 iperf2 端点。 iperf3 支持 --one-off 标志,使服务器最多进行一次测试并退出。
对于 iperf2,-t 将在无流量 t 秒后终止侦听器。它还会将服务器线程限制为 t 秒,而不管客户端的 -t 时间。如果给出 -d,则 -t 仅适用于服务器流量线程,iperf 侦听器将保留。
另一种在测试后终止侦听器的选项是在服务器命令行上设置 -P 1
鲍勃
解决此问题的一种方法是,如果您在一段时间后未获得连接或客户端连接超时。您可以尝试建立服务器到服务器的连接。这加上 1 关闭选项将关闭服务器。
示例使用 python2:
import subprocess
import time
import numpy as np
iperf_location = r'C:\Users\iperf3.exe'
server_IP = '192.168.0.10'
client_IP = '192.168.0.11'
server_command = iperf_location + ' -s -B ' + server_IP + ' --one-off'
client_command = iperf_location + ' -c ' + server_IP + ' -B ' + client_IP
#this command does a server to server connection. This way the server will close out correctly
#in the event that the client cannot connect
fail_command = iperf_location + ' -c ' + server_IP + ' -B ' + server_IP
subprocess.Popen(server_command)
time.sleep(1)
x = subprocess.Popen(client_command, stdout=subprocess.PIPE)
speed_list = []
for item in x.stdout:
item = str(item)
#print item
if 'Mbits/sec' in item.split(' '):
if "sender\n" not in item.split(' '):
if "receiver\n" not in item.split(' '):
x = item.split(' ').index('Mbits/sec')
speed_list.append(float(item.split(' ')[x-1]))
if len(speed_list) != 0:
avg_data_rate = np.average(speed_list)
print avg_data_rate
else:
avg_data_rate = 0
print 'Test failed. Doing server direct test to ensure iperf cleans up correctly'
subprocess.check_output(fail_command)
基于 this 答案,如何在 iperf3
中完成此操作。通过 iperf3
手册页和文档,似乎 -t
选项不再存在。在一段时间后或者如果一段时间内没有客户端存在,我可以实施哪些其他方法来终止服务器进程?有没有比 运行 在后台使用 bash 脚本在一定时间后终止服务器更好/更简单的方法?
目前没有办法让 iperf3 服务器在一段时间后或者没有客户端时死机。
您发布的 link 提到希望在测试后完成 iperf2 端点。 iperf3 支持 --one-off 标志,使服务器最多进行一次测试并退出。
对于 iperf2,-t 将在无流量 t 秒后终止侦听器。它还会将服务器线程限制为 t 秒,而不管客户端的 -t 时间。如果给出 -d,则 -t 仅适用于服务器流量线程,iperf 侦听器将保留。
另一种在测试后终止侦听器的选项是在服务器命令行上设置 -P 1
鲍勃
解决此问题的一种方法是,如果您在一段时间后未获得连接或客户端连接超时。您可以尝试建立服务器到服务器的连接。这加上 1 关闭选项将关闭服务器。
示例使用 python2:
import subprocess
import time
import numpy as np
iperf_location = r'C:\Users\iperf3.exe'
server_IP = '192.168.0.10'
client_IP = '192.168.0.11'
server_command = iperf_location + ' -s -B ' + server_IP + ' --one-off'
client_command = iperf_location + ' -c ' + server_IP + ' -B ' + client_IP
#this command does a server to server connection. This way the server will close out correctly
#in the event that the client cannot connect
fail_command = iperf_location + ' -c ' + server_IP + ' -B ' + server_IP
subprocess.Popen(server_command)
time.sleep(1)
x = subprocess.Popen(client_command, stdout=subprocess.PIPE)
speed_list = []
for item in x.stdout:
item = str(item)
#print item
if 'Mbits/sec' in item.split(' '):
if "sender\n" not in item.split(' '):
if "receiver\n" not in item.split(' '):
x = item.split(' ').index('Mbits/sec')
speed_list.append(float(item.split(' ')[x-1]))
if len(speed_list) != 0:
avg_data_rate = np.average(speed_list)
print avg_data_rate
else:
avg_data_rate = 0
print 'Test failed. Doing server direct test to ensure iperf cleans up correctly'
subprocess.check_output(fail_command)