【发布时间】:2019-09-02 16:54:04
【问题描述】:
我正在尝试在 Ubuntu 16.04 上编写一个 shell 脚本,它将在另一台机器上远程执行命令,然后在本地执行更多命令。这个我试过了,还是不行
#!/bin/bash
ssh username@10.200.31.131 'pkill iperf'
ssh -f username@10.200.31.131 'iperf -s'
iperf -c 10.150.91.175 >iperflog.txt
它将在远程服务器上执行前 2 个命令,但我认为它也在尝试在远程服务器上执行最后一个命令,我想在本地服务器上执行最后一个命令。我怎样才能做到这一点?谢谢
【问题讨论】:
-
命令是一次运行一个,所以远程
iperf在本地启动之前就已经完成了。我不认为那是你想要的。也许你需要在后台运行远程ssh,即`ssh -f user@.....'iperf -s'&`。祝你好运。 -
感谢您的评论。我应该提到 - 'iperf -s' 命令将永久运行 iperf 服务器,直到它停止
-
请尝试
ssh -f user@... 'iperf -s'&。我认为它会解决你的问题。最后一个cmd(本地iperf)不可能在远程机器上运行。您可以通过在脚本顶部附近使用set -vx打开 shell 调试/跟踪来查看 shell 脚本中发生了什么。如果没有&,您将看到最后一个命令永远不会执行,而如果您启动第一个iperfw&,那么您将看到最后一个命令执行。祝你好运。