通过 socat 使用本地参数运行远程命令?

Fen*_*eta 5 unix linux tcp socat

我想在计算机 A 上设置一个 socat 套接字,它将从计算机 B 上的套接字接收一个字符串。该字符串应解释为将在计算机 A 上执行的命令的参数,例如:

计算机A:

socat TCP4-L:3334,fork SYSTEM:"./parsecommand.sh $INCOMING_STRING_OF_ARGS"

计算机B:

socat TCP4:remote.host:3334 SYSTEM:"echo 'out going string of args'"

这是此类动议的正确语法吗?例如,socat 宇宙中是否有一些与 $@ 等效的变量,以便我可以用该变量替换 $INCOMING_STRING_OF_ARGS 来实现此目的?

在完整的上下文中:我们想要的是用“ssh”替换运行远程命令的“socat”。我们希望在计算机 A 和计算机 B 之间建立双向连接,将命令从计算机 B 发送到计算机 A,在计算机 A 上执行命令,然后将输出返回到计算机 B。

Ste*_*ker 0

看起来您正在寻找反向外壳?

在服务器上:

$ socat tcp-l:5050,reuseaddr,fork system:bash
Run Code Online (Sandbox Code Playgroud)

(使用openssl-l而不是添加传输安全性tcp-listen。)

在客户端:

$ socat - tcp:<server-ip>:5050
Run Code Online (Sandbox Code Playgroud)

或者简单地netcat

$ nc <server-ip> 5050
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望 shell 脚本处理传入的命令:

$ socat tcp-l:5050,reuseaddr,fork system:bash
Run Code Online (Sandbox Code Playgroud)

这非常不安全,所以我建议坚持使用 SSH。