python之模仿ssh服务

小白练习笔记

import socket
import os
server = socket.socket()      #实例化
server.bind(('localhost',9999))  #绑定ip及端口

server.listen()          #监听

while True:              #循环监听服务,接收用户来访
conn,addr = server.accept()  #实例化来访用户
print('new conn:',addr)

while True:            #持续监听用户的来访指令
print('等待新的指令')
data = conn.recv(1024)    #接收缓冲区大小
if not data:          #防止空信息
print('客户端已断开')
break
print('执行指令:',data)    
cmd_res = os.popen(data.decode()).read()    #存储指令返回结果
print('before send', len(cmd_res.encode('utf-8')))    
if len(cmd_res) == 0:              #防止无返回信息,客户端卡死
cmd_res = 'cmd has no output....'
conn.send(str(len(cmd_res.encode('utf-8'))).encode('utf-8'))    #通知客户端返回信息长度,注意编码,汉字占3字节,如果不编码将导致字节数不一致
conn.send(cmd_res.encode('utf-8'))      #发送信息,将信息转换成字节码
print('send done')    
server.close()

猜你喜欢

转载自www.cnblogs.com/kcrist/p/9647344.html