目录

python | socket | ssh

server

import commands,socket
class MySocketServer:

    HOST='www.tnkyou.com'
    PORT=50000
    RECEIVE_SIZE=8192


    def __init__(self):
        self.s = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
        self.s.bind((self.HOST, self.PORT))
        self.s.listen(4)

    def run(self):
        self.conn,self.addr = self.s.accept()
        print 'from: '+str(self.addr)

        while True:
            data = self.conn.recv(self.RECEIVE_SIZE)
            data = data.strip()

            if data == 'exit':
                self.conn.sendall("bye")
                self.close()
                break

            status,result = commands.getstatusoutput(data)
            if len(result.strip()) != 0:
                print status,result
                print
                self.conn.sendall(result)
            else:
                self.conn.sendall(" ")
    def close(self):
        self.conn.close()
        self.s.close()

    def __del__(self):
        self.close()

if __name__ == '__main__':
    server = MySocketServer()
    server.run()
    server=''

Client

import commands,socket
class MySocketClient:
    
#    HOST='localhost'
#    HOST='www.tnkyou.com'
    HOST='121.40.142.12'
    PORT=50000
    RECEIVE_SIZE=8192
    
    
    def __init__(self):
        self.s = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
        self.s.connect((self.HOST, self.PORT))
        
    def run(self):        
        while True:
            cmd = raw_input(">")
            cmd = cmd.strip()
            
            if len(cmd.strip()) == 0:continue
            
            self.s.sendall(cmd)
            
            data = self.s.recv(self.RECEIVE_SIZE)

            if data == 'bye':
                print "bye"
                self.close()
                break
            
            print data
    def close(self):
        self.s.close()
        
    def __del__(self):
        self.close()
if __name__ == '__main__':
    client = MySocketClient()
    client.run()
    client = ''