我正在开发一个几乎没有人工干预的自动化框架。有一个服务器和客户端
服务器做的是它向客户端发送一些命令并获取输出。
使用服务器计算机本身的Spur模块启动与客户端计算机的套接字连接(而不是进入每个客户端并执行客户端程序)。
正在发生的事情是它能够建立连接并发送给客户端但无法从客户端接收任何内容
server.py
import socket
serversock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host = ''
print host
port = 11111
serversock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversock.bind((host,port))
serversock.listen(4)
try:
csock,addr = serversock.accept()
print 'Recieved address from %s '% str(addr)
print csock.send('hello') **# It is able to print the number of bytes sent**
data = csock.recv(1024)
print data **# But not receiving any data**
csock.close()
except Exception,e:
print e
这是支线模块程序。现在单独运行它,但必须在server.py本身。所以,在服务器机器上我正在运行服务器程序和这个支持模块程序。
import spur
ss = spur.SshShell(hostname = "172.16.6.58",username ='username',password = 'password',shell_type=spur.ssh.ShellTypes.minimal,missing_host_key=spur.ssh.MissingHostKey.accept)
res = ss.run(['python', '/home/some_username/clientsock.py'])
print res.output
这是在172.16.6.58机器上运行的客户端程序(我们正在搜索)
clientsock.py
import socket
try:
c = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
c.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
host = '172.16.6.32'
port = 11111
c.connect((host,port))
data = c.recv(1024)
print data
msg = 'hi this is client'
c.send(msg)
except Exception,e:
print e
finally:
c.close()
请告诉我这个代码有什么问题,或者我应该使用哪个模块在客户端机器上启动进程?