• python ssh 交互式命令行脚本,查找关键字,进行下一步命令操作。


    import paramiko
    import json
    import time
    from paramiko.ssh_exception import NoValidConnectionsError
    from paramiko.ssh_exception import AuthenticationException
    
    
    class SSHConnection():
        def __init__(self, hostname, port, username, password):
            self.hostname = hostname
            self.port = port
            self.username = username
            self.password = password
            try:
                self.connect()
            except (AuthenticationException, NoValidConnectionsError, TimeoutError) as e:
                print(e)
    
            stdin, stdout, stderr = self.ssh.exec_command('system identity pr')
            output = stdout.read().decode()
            self.identity = output.split(':')[1].strip()
    
        def connect(self):
            self.ssh = paramiko.SSHClient()
            self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            self.ssh.connect(hostname=self.hostname, port=self.port, username=self.username, password=self.password)
    
        def run(self, input):
            output = self.cmd(input)
            # self.close()
            return output
    
    
        def cmd(self, input):
            stdin, stdout, stderr = self.ssh.exec_command(input)
            output = stdout.read().decode()
            # prompt = '[%s@MikroTik] > %s\n' % (self.username, input)
            prompt = '[%s@%s] > %s\n' % (self.username, self.identity, input)
            print(prompt + output)
            return output
    
    
        def close(self):
            self.ssh.close()
    
    
    if __name__ == '__main__':
        ssh = SSHConnection('192.168.64.201', 22, '路由器账号', '路由器密码')
    
        output = ssh.run('int pppoe-client pr')
    
        if output.find('R name="pppoe-out27"') >= 0:
            ssh.run('/ip pool set test ranges=1.1.1.27')
    
        ssh.close()
  • 相关阅读:
    servlet 与缓存(4)
    向架构师进军--->系统架构设计基础知识
    sql语法:inner join on, left join on, right join on具体用法
    关于sources.list和apt-get [转载]
    SoftReference
    MFC 之 截图工具
    Outlook Express 收发邮件出现"0x800CCC0F"错误代码解决方法
    使用ffmpeg视频编码过程中踩的一个坑
    Libgdx环境搭建及介绍
    从简单的信道预计说起
  • 原文地址:https://www.cnblogs.com/itfat/p/16803420.html
Copyright © 2020-2023  润新知