我们可以使用MozRepl从telnet上退出而没有错误吗?



基于这个答案,我试图找出一种方法从telnet退出,它返回0

这些行不通:

(echo -e "repl.quit()";sleep 1) |telnet localhost 4242;echo $?
(echo -e "29";sleep 1;echo "q";sleep 1) |telnet localhost 4242;echo $?
(echo -e "c]";sleep 1;echo "q";sleep 1) |telnet localhost 4242;echo $?
(echo -e "e]";sleep 1;echo "q";sleep 1) |telnet localhost 4242;echo $?
(echo -e "E]";sleep 1;echo "q";sleep 1) |telnet localhost 4242;echo $?

问题是:我无法区分成功退出和失败退出…

我认为这个问题可以联系起来。

您需要发送^]字符,这是一个不可打印的组分隔字符,在您的telnet客户端在通过管道执行所有命令后终止您的连接之前。大多数版本的echo程序使用-e选项会产生不可打印的字符。组分隔符是八进制的035(您可以在*nix系统上使用man 7 ascii看到整个ASCII表)。所以,整个命令应该是这样的:

$ (echo "content.location.href = 'http://v4.ident.me/'"; sleep 2; echo -e '35'; sleep 2) | telnet localhost 4242 > /dev/null
$ echo $?
$ 0

相关内容

  • 没有找到相关文章

最新更新