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)# 系统 报错结束
# 开始发送
时间: 2024-09-30 10:47:47

python ssh的相关文章

使用 Python ssh 远程登陆服务器的最佳方案

首发自公.众.号:Python编程时光 在使用 Python 写一些脚本的时候,在某些情况下,我们需要频繁登陆远程服务去执行一次命令,并返回一些结果. 在 shell 环境中,我们是这样子做的. $ sshpass -p ${passwd} ssh -p ${port} -l ${user} -o StrictHostKeyChecking=no xx.xx.xx.xx "ls -l" 然后你会发现,你的输出有很多你并不需要,但是又不去不掉的一些信息(也许有方法,请留言交流),类似这样

python ssh登录

3. 编写linkssh.py #!/usr/bin/env python# -*- coding: utf-8 -*-# filename: pexpect_test.py'''Created on 2012-03-31 @author: qvb3d'''import pexpect if __name__ == '__main__':    user = 'root'    ip = '192.168.1.8'    mypassword = '不能写了'    child = pexpec

python ssh弱口令爆破多线程脚本及遇到的一些错误与问题

练习写了个SSH弱口令爆破多线程脚本,遇到的问题 1.一开始想import pexpect 中的pxssh 然而却一直该有错误, ImportError: cannot import name spawn google了下问题都说的很模糊也不清楚.有的说是pexpect模块没安装好,有的说是python import的问题,因为在lib中已经有了spawn模块,与pexpect模块中的spawn重名了,所以报错.但也都没说清楚该这么弄.最后在here这里看到了问题原因,原来是pexpect根本不

python ssh之paramiko模块使用

1.安装: sudo pip install paramiko 2.连接到linux服务器 方法一: #paramiko.util.log_to_file('ssh.log') #写日志文件 client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在~/.ssh/known_hosts文件中的主机 client.connect('ip',22, 'userna

python ssh免登陆

#!/usr/bin/env python import os,sys import pexpect import time def Pai(line,passwd): try: cmd = "ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]%s" %line   ##命令 child = pexpect.spawn(cmd)         ##铺抓命令 i=child.expect(['continue','passwor

python ssh登录linux 上传和下载文件

#!usr/bin/python# coding: utf-8 import paramikoimport jsonremotedir='/tmp/log'remotefile = 'bst_manager-2019-04-17-info.log'hostname = '192.168.50.34'port = 8022username = 'root'password ='*****'command = """tail -n 30 /tmp/log/bst_manager-

python ssh 连接远程服务器,修改文本内容,调用脚本

今天小编get到一个用python的paramiko库创建ssh对象,连接到远程服务器,并且修改文件内容,调用脚本的好方法!! 主角当然是paramiko库啦,利用paramiko创建一个ssh对象,用于连接远程服务器 import paramiko ssh = paramiko.SSHClient()#创建SSH对象 设置允许连接不在know_hosts的主机,ssh会将 访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts,当下次访问相同计算机时,OpenS

python ssh工具paramiko的修改

经常使用paramiko工具对几百台设备进行管理.主要是每天到上边取文件过来,作为备份. 今天发现程序运行了10个小时还没有结束,就上去看一个究竟. 查看日志,发现在取一台服务器上的文件时卡在那里了.自己手动ssh登录上去,执行了一个ls命令就卡住了, 原来是这个服务器的硬盘出问题了.怪不得取不到文件. 但是想想,程序应该是在一段时间内读取不到数据就超时退出的阿,怎么会卡在那里呢.找到执行命令的那段 sin, sout, serr = ssh.exec_command('tar -zc0 /da

python ssh连接

import paramiko def fw_exec(self, command): def fw_exec(self, command): FW_USER = '' FW_PASSWD = '' FW_HOST = '' paramiko.util.log_to_file('paramiko_log.txt') ssh=paramiko.SSHClient() ssh.load_system_host_keys() ssh.set_missing_host_key_policy(parami