标签:python 服务器 return import 多线程
import socket
import paramiko
import threading
import sys
# 资源包引入
host_key= paramiko.RSAKey(filename=‘test_rsa.key‘)
#host_key 密钥
class Server(paramiko.ServerInterface):#定义包含类 定义服务器
def __init__(self):#构造函数 默认启动线程
self.event = threading.Event()#就是启动 多线程
def check_channel_request(self,kind,chanid):#定义了 方法
if kind == ‘session‘:#获取方式
return paramiko.OPEN_SUCCEEDED#session 返回
return paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED#else 开始 返回
def check_auth_password(self,username,password):#定义了密码 检测密码 跟 用户
if(username == ‘justin‘) and (password == ‘lovethepython‘):
return paramiko.AUTH_SUCCESSFUL
return paramiko.AUTH_FAILED
# class 准备
server = sys.argv[1]#获取输入信息
ssh_port = int(sys.argv[2])#获取端口
# 命令行 参数 获取
try:#基础 开始
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建socket 连接
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)#获取数据输入
sock.bind(server,ssh_port)#绑定 发送端口
sock.listen(100)#监听 线程 100 次
print ‘[+] Listen for connection‘#监听 了 开始
client,addr = sock.accept()#接收到的 数据,进行处理
except Exception,e:
print ‘[-] Listen failed:‘+str(e)# 否则报错
sys.exit(1)#系统报错 结束进程
print ‘[+] Got a connection!‘# 否则 进行了 连接获取
#开始连接
try:# 大的 尝试
bhSession = paramiko.Transport(client)#ssh 连接 方式
bhSession.add_server_key(host_key)#添加 服务器 的连接密钥
server = Server()# 启动 服务器 class 开始
try:# 尝试
bhSession.start_server(server=server)# 开启服务
except paramiko.SSHException,x:#报错信息了
print ‘[-] SSH negotiation failed.‘# 直接输出
chan = bhSession.accept(20)# 监听
print ‘[+] Authentiacated!‘#权限 认证
print chan.recv(1024)# 获取信息
chan.send(‘Welcome to bh_ssh‘)#发送信息
while True:# 循环等待
try:# 尝试
command = raw_input("Enter command:").strip(‘\n‘)#对输入的信息,然后 进行 转码
if command != ‘exit‘:#如果命令 为 空
chan.send(command)# 发送命令 过去
print chan.recv(1024)+‘\n‘# 然后等待 接收
else:
chan.send("exit")# 否则 发送 报错信息
print ‘exiting‘#打印 错误信息
bhSession.close()# 结束
raise Exception (‘exit‘)
except KeyboardInterrupt:# 异常报错
bhSession.close()#结束了
except Exception,e: # 大的错误
print ‘[-] Caught exception:‘+str(e)# 提示错误信息
try:# 关闭 连接
bhSession.close()
except:# 如果关闭不了了,那就关闭了
pass
sys.exit(1)# 系统 报错结束
# 开始发送本文出自 “专注php” 博客,请务必保留此出处http://jingshanls.blog.51cto.com/3357095/1790078
标签:python 服务器 return import 多线程
原文地址:http://jingshanls.blog.51cto.com/3357095/1790078