当通过telnet会话打开Python解释器时,每个发送的命令都会被拒绝并显示"SyntaxError: invalid syntax"。 如何成功地通过telnet会话发送命令?
示例: 启动一个服务器,以交互模式提供Python解释器:
socat TCP-LISTEN:5092 EXEC:'python -i'
使用Telnet连接并从Telnet会话发送命令:
>telnet localhost 5092
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
print "test"
在服务器端产生以下结果:
>socat TCP-LISTEN:5092 EXEC:'python -i'
Python 2.7.5 (default, Aug 25 2013, 00:04:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> File "<stdin>", line 1
print "test"
^
SyntaxError: invalid syntax
>>>
我在Mac OS X 10.9.2中使用两个不同的终端窗口来运行所有这些内容,Python版本是2.7.5。
我发现一个类似问题的描述在这里,然而设置PYTHONUNBUFFERED=NO并没有解决问题。
此外,当直接与python解释器交互时(即不通过telnet),不会出现这种错误。
我的怀疑是这与telnet发送行结尾的方式有关。尝试在telnet会话中切换“切换crlf”,从
<CR><NUL>
切换到<CR><LF>
以进行回车键操作,但仍然没有帮助。非常感谢您提供任何帮助/想法/思路!
问候, 卡尔斯滕