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。
看起来您正在寻找反向外壳?
在服务器上:
$ 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。