![nc 在连接拒绝时重试](https://linux22.com/image/129841/nc%20%E5%9C%A8%E8%BF%9E%E6%8E%A5%E6%8B%92%E7%BB%9D%E6%97%B6%E9%87%8D%E8%AF%95.png)
有什么解决办法吗
nc 192.168.1.1 1234 重试直到连接以及连接后;它将通过正在侦听端口号的计算机 192.168.1.1 上的“nc 192.168.1.1 1234”发送输出。 1234.
??
//一旦通过 nc 命令创建连接,我想通过“nc”发送消息,否则它将尝试通过 nc 重新连接//
答案1
如果您使用的是bash
shell 或类似的 shell,您可以执行如下操作;
cat message | while ! nc 192.168.1.1 1234 ; do sleep 1 ; done
答案2
我也有类似的问题,但是对于curl。我构建了一个名为“重试”的专用工具来执行此操作。重试一次且仅一次读取 stdin,重复 nc 命令直到成功,然后在成功时将 stdout 一次且仅一次输出到管道中的下一个命令。
~$ echo output | retry -- nc 192.168.1.1 1234
retry: nc returned 1, backing off for 10 seconds and trying again...
retry: nc returned 1, backing off for 10 seconds and trying again...
^C
https://github.com/minfrin/retry
在最新的 Debian、Ubuntu 和 Nix 中开箱即用。