python套接字应用程序不能按照预期从终端运行

问题描述:

我正在购买一本名为'Black Hat Python'的书,但遇到了我无法解决的问题。python套接字应用程序不能按照预期从终端运行

本书迄今为止已经让读者创建了几个python应用程序:一个用于发送/接收数据的命令行工具,远程执行命令和一个通过指定主机/端口重定向连接的TCP代理客户端。

问题是,当我从终端启动它们时,我没有收到任何输出,终端用屏幕抓取类型游标等待我的输入。它等待着我'抢'一个图像或屏幕的一部分3次,然后失败。然后我将一些图像文件保存到名为'getopt','socket','subprocess','threading'和'sys'的Home文件夹中。我从终端获得被“截获”的屏幕3次后的输出是:

[email protected]:~# ./1proxy.py 127.0.0.1 21 ftpserver.ftp 21 True 
./1proxy.py: line 5: syntax error near unexpected token `(' 
./1proxy.py: line 5: `def server_loop(local_host, local_port, remote_host, remote_port, receive_first): 

然而,当我在IDE的客户端运行它,它运行正常,当我将它传递相同的参数。连接被启动并等待连接到远程主机。输出是正确的,然后和代理客户端等待通过本地主机连接端口21:

[*] Listening on 127.0.0.1:21 
[==>] Receive incoming connection from 127.0.0.1:49475 

有谁知道为什么发生这种情况?为什么我不能以相同的结果从终端执行此操作?

我传递的参数是:

./myproxy.py 127.0.0.1 21 ftpserver.ftp 21 True 

127.0.0.1 = localhost 
21 = local port 
ftpserver.ftp = remote host 
21 = remote port 
True = receive first 

可能发生的,因为你的shell试图通过你的脚本BASH执行。 BASH将在您的代码中看到很多错误。而不是输入./code.py,您需要在脚本的开头运行python code.py或添加#!/path/to/python

+0

成功!非常感谢你! – rayd44 2015-02-08 20:17:21

+0

同样,不要说'谢谢你',请考虑接受答案。谢谢。 – ForceBru 2015-02-09 06:30:18