通过套接字

时间:2015-09-02 05:17:44

标签: python sockets networking execute

您好我有套接字设置,我想发送python命令在第二台计算机上执行。到目前为止,我可以在第二台机器上发送命令s.send('print "hello world"')m.recv(1024)。我可以执行类似x = m.recv(1024)的操作,然后在下一行只执行x来执行已收到的内容吗?请注意我设置了套接字并运行一台机器作为服务器,一台作为客户端运行。但是我从来没有确定我是否一直在使用recvsend,因为我无法测试它们。

由于

2 个答案:

答案 0 :(得分:0)

如果使用eval,则可以将python代码作为字符串执行:

eval('print "Hello world"')

这将打印Hello world。

在Python 3中直接打印输入():

eval(m.recv(1024).decode('utf-8'))

Python 2:

exec(m.recv(1024))

就像彼得伍德在评论中所说的那样,你必须小心收到的东西;每个有权访问您服务器的人都可以发送他们想要的任何代码,他们只需发送代码即可创建文件。

确保只有才能访问它,并且为了安全起见,制作功能黑名单,甚至是白名单。

答案 1 :(得分:0)

如果您使用的是python 2.x,请使用exec函数:

x = m.recv(1024)
exec(x)

如果是python 3.x,请使用eval函数:

x = m.recv(1024).decode('utf-8')
eval(x)

请注意,这不允许您运行字符数为>的命令。 1024(极不可能)。此外,您需要注意传递给这些函数的内容。