我需要使用Python程序将命令
iperf -s
发送到Linux服务器。命令未发送。问题的时间顺序如下:
iperf -s
。什么也没发生,程序冻结(我没有停止程序)。netstat -tupln
检查进程。服务器上创建了一个进程iperf
,但什么也没发生。sudo kill -9 <PID>
终止此进程,则当执行 iperf -s
并且程序退出时,程序将输出传统输出。iperf
进程不存在。这是我的代码:
remote_server = "172.22.94.171"
client = paramiko.client.SSHClient()
username = "useruser"
password = "password"
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(remote_server, port=22, username=username, password=password)
stdin, stdout, stderr = client.exec_command('sudo iperf -s', get_pty=True)
stdin.write(password+'\n')
print(stdout.readlines())
我正在向服务器发送命令
。什么也没发生,程序冻结(我没有停止程序)。iperf -s
它不会冻结。
iperf -s
将作为服务器在前台运行。它正在等待 iperf 客户端连接,因此 iperf -s
不会立即退出。 stdout.readlines()
将读取所有数据直到 EOF,但由于 iperf -s
尚未退出,因此 stdout.readlines()
只会阻塞在那里等待 EOF。
我使用
检查进程。服务器上创建了一个iperf进程,但是没有任何反应。netstat -tupln
netstat
输出所示的过程就是iperf -s
服务器。
如果我使用 sudo Kill -9 终止此进程,则当执行
并且程序退出时,程序将输出传统输出。iperf -s
你杀了它,
iperf -s
就死了。然后stdout.readlines()
到达EOF并返回。
要在后台启动
ieprf
服务器,请使用 iperf --daemon -s
。