如何使用 socat 测试远程端口是否可访问

w11*_*00n 5 linux socat

如何使用socat测试远程端口是否可达?

使用 netcat 我们可以

nc -zv 192.168.1.15 22
Run Code Online (Sandbox Code Playgroud)

如何用 socat 做到这一点?

Arc*_*ano 7

由于 OP 请求了-z以下socat命令的等效项,因此将确保它不会等待输入,而只会检查端口是否正在侦听。

socat /dev/null TCP:remote:port
Run Code Online (Sandbox Code Playgroud)

这可以在 Docker 上下文中使用,尤其是在alpine/socat图像的健康检查中。这是一个示例,该示例为smtp服务设置转发器mailhog并检查连接是否已建立

services:
  smtp:
    image: alpine/socat
    command: tcp-listen:25,fork TCP:mailhog:1025
    healthcheck: socat /dev/null TCP:mailhog:1025
Run Code Online (Sandbox Code Playgroud)


Lar*_*din 5

我想手册页中的第一个示例会起作用

socat - TCP4:www.domain.org:80
Run Code Online (Sandbox Code Playgroud)

对于您的示例,这将是(并添加 2 秒连接超时):

socat - TCP4:192.168.1.15:22,connect-timeout=2
Run Code Online (Sandbox Code Playgroud)

响应将是 sshd 连接横幅(如果这就是正在侦听的内容)

SSH-2.0-OpenSSH_5.3
Run Code Online (Sandbox Code Playgroud)

或者

socat[12650] E connecting to AF=2 192.168.189.6:23: Connection timed out
Run Code Online (Sandbox Code Playgroud)