最近在看python網絡方面的知識,發現使用socket編寫一些小的服務器真是太方便了,簡單幾行代碼就能實現一個服務器,真是高大上呀,廢話少說,直接上代碼:
SSH服務器端代碼:
#!/usr/bin/env python #coding:utf-8 #file : ssh server import socket , commands host = 'localhost' port = 8998 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR ,1) s.bind((host,port)) s.listen(2) while 1: c,a = s.accept() print "Connected from:" , a while 1: data = c.recv(1024).strip() if not data: break status , result = commands.getstatusoutput(data) if len(result.strip()) != 0: c.sendall(result) else: c.sendall("Done") c.close s.close(
SSH客戶端代碼:
#!/usr/bin/env python #coding:utf-8 #file: ssh client import socket host = 'localhost' port = 8998 s =socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host,port)) while 1: cd = raw_input("Please enter an command:").strip() if not cd: continue s.sendall(cd) data =s.recv(8096) print data s.close()
這兩個腳本實現了簡單的linux命令的查詢功能,但是有一個bug就是長命令的查詢功能沒有實現,下次進行更正。