码迷,mamicode.com
首页 > 编程语言 > 详细

python ssh

时间:2016-06-17 00:55:25      阅读:261      评论:0      收藏:0      [点我收藏+]

标签: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 ssh

标签:python   服务器   return   import   多线程   

原文地址:http://jingshanls.blog.51cto.com/3357095/1790078

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!