您好我有套接字设置,我想发送python命令在第二台计算机上执行。到目前为止,我可以在第二台机器上发送命令s.send('print "hello world"')
和m.recv(1024)
。我可以执行类似x = m.recv(1024)
的操作,然后在下一行只执行x
来执行已收到的内容吗?请注意我设置了套接字并运行一台机器作为服务器,一台作为客户端运行。但是我从来没有确定我是否一直在使用recv
和send
,因为我无法测试它们。
由于
答案 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(极不可能)。此外,您需要注意传递给这些函数的内容。