• 获取网络设备返回值


    获取网络设备返回值

    # !/usr/bin/env python
    # -*- coding: utf-8 -*-
    import sys
    import contextlib
    from io import StringIO
    
    
    @contextlib.contextmanager
    def stdoutIO(stdout=None):
    	old = sys.stdout
    	if stdout is None:
    		stdout = StringIO()
    	sys.stdout = stdout
    	yield stdout
    	sys.stdout = old
    
    
    code_str = """
    import sys
    import paramiko
    import time
    
    try:
    	# python2
    	reload(sys)
    	sys.setdefaultencoding("utf-8")
    except:
    	# python3
    	import importlib
    
    	importlib.reload(sys)
    
    
    def pa_invoke_shell(ip, port, username, password, commands):
    	ssh = paramiko.SSHClient()
    	ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    	ssh.connect(ip, port, username, password)
    	channel = ssh.invoke_shell(width=1000)
    
    	result_list = []
    	for cmd in commands:
    		channel.send(cmd)
    		time.sleep(0.1)
    		result = channel.recv(65535)
    		while True:
    			channel.send(" ")
    			time.sleep(0.1)
    			results = channel.recv(65535)
    			if results == b' ':
    				break
    			result += results
    		result_list.append(result.decode('utf-8'))
    
    	channel.close()
    	ssh.close()
    	return result_list
    result = pa_invoke_shell(ip=ip, port=22, username=username, password=password,
    						 commands=["terminal length 0
    ", "show config
    "])
    """
    
    local_vars = None
    kwargs = {
    	"ip": "10.12.32.49",
    	"port": 22,
    	"username": "hillstone",
    	"password": "hillstone",
    	"commands1": [
    		"terminal length 0
    ",
    		"show ip route
    "
    	],
    	"commands2": [
    		"terminal length 0
    ",
    		"show config
    "
    	],
    }
    with stdoutIO() as s:
    	try:
    		code_obj = compile(source=code_str, filename='', mode='exec')
    		exec(code_obj, kwargs, local_vars)
    		# print(locals())
    		# print(locals().get('shell_output'))
    		# print(globals().keys())
    		res = locals().get("kwargs")
    	except Exception as e:
    		raise e
    
    print(res.get("result"))
    希望你眼眸有星辰,心中有山海,从此以梦为马,不负韶华
  • 相关阅读:
    Hbuilder连接第3方模拟器(夜神)
    localStorage H5本地存储
    各种经典教程的收集分享
    laravel学习教程整理
    js-打地鼠游戏开发
    我的文件备份
    jQuery Ajax 简单的实现跨域请求
    HTML如何编写为桌面程序
    js调用打印机
    js base64加密解密
  • 原文地址:https://www.cnblogs.com/daviddd/p/15124047.html
Copyright © 2020-2023  润新知