模拟netcat -e

我怎样才能模拟netcat -e与没有-e选项的netcat版本?

我需要远程触发一个命令。 我可以用netcat做 – 没有-e

#!/斌/庆典

netcat -l 8080; myCommand.sh

这样做就可以了, 但是我想根据命令的成功或失败来回复客户端(有一种类似REST的接口)。

我怎么能这样做?

谢谢!

 mkfifo foo nc -lk 2600 0<foo | /bin/bash 1>foo 

然后只需要nc servername 2600和./script.sh

用ctrl + c杀死客户端

最好的方法是切换到支持它的netcat版本。 在Debian / Ubuntu IIRC上,你应该使用netcat 传统的 ,而不是netcat openbsd

  sudo apt-get install netcat-traditional # netcat-openbsd 

您将可以选择明确指定您需要的版本:

  nc.traditional server 6767 -e myscript.sh nc.openbsd -l 6767 

请注意选项使用的细微差异 )。 正如你所看到的(下面),nc.traditional可以作为一个独立的二进制文件运行,这取决于libc和linux本身,所以如果你没有安装权限,你应该可以把独立的二进制文件放在某个地方(一个文件系统与当然exec许可)并运行它

  /home/user/bin/mynetcat server 6767 -e myscript.sh 

HTH


 $ ldd `which nc.{traditional,openbsd}` /bin/nc.traditional: linux-gate.so.1 => (0xb7888000) libc.so.6 => /lib/libc.so.6 (0xb7709000) /lib/ld-linux.so.2 (0xb7889000) /bin/nc.openbsd: linux-gate.so.1 => (0xb77d0000) libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0xb76df000) libc.so.6 => /lib/libc.so.6 (0xb7582000) libpcre.so.3 => /lib/libpcre.so.3 (0xb754c000) /lib/ld-linux.so.2 (0xb77d1000)