python ssh

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)# ϵͳ �������
# ��ʼ����


���ij��� ��רעphp�� ���ͣ�����ر����˳���http://jingshanls.blog.51cto.com/3357095/1790078

你可能感兴趣的:(python ssh)