第一种写法:

#!/usr/bin/python

表示写死了就是要 /usr/bin/python 这个目录下 python 来执行脚本。

第二种写法:

#!/usr/bin/env python

这种写法在机器上安装了多个版本的python或者python没有安装在默认目录有用,这样声明的时候,会去取机器的 PATH 中指定的第一个 python 来执行脚本。如果这时候又配置了虚拟环境的话,那么这样写可以保证脚本会使用虚拟环境中的 python 来执行

推荐第二种

现在的SDN解决方案基本上通过把各种模式的数据包(包括VLAN\VXLAN\虚拟网络等)封装在三层数据包中,底层是VXLAN技术加上各种协议 当然,思科也不例外,思科的ACI架构就是底层通过VXLAN来封装,通过二层的IS-IS来交换一些位置信息(与fabripath类似),通过MP-BGP来传递路由信息,还有一些LLDP协议等。当然,这些技术细节并不会对开放给用户,当思科的N9K系列交换机运行在ACI模式时,大部分配置是在中心管理器APIC上完成的,交换机本身处于不能配置状态。

About ACI Fabric Fundamentals

The ACI fabric supports more than 64,000 dedicated tenant networks. A single fabric can support more than one million IPv4/IPv6 endpoints, more than 64,000 tenants, and more than 200,000 10G ports. The ACI fabric enables any service (physical or virtual) anywhere with no need for additional software or hardware gateways to connect between the physical and virtual services and normalizes encapsulations for Virtual Extensible Local Area Network (VXLAN) / VLAN / Network Virtualization using Generic Routing Encapsulation (NVGRE).

The ACI fabric decouples the endpoint identity and associated policy from the underlying forwarding graph. It provides a distributed Layer 3 gateway that ensures optimal Layer 3 and Layer 2 forwarding. The fabric supports standard bridging and routing semantics without standard location constraints (any IP address anywhere), and removes flooding requirements for the IP control plane Address Resolution Protocol (ARP) / Generic Attribute Registration Protocol (GARP). All traffic within the fabric is encapsulated within VXLAN.

Decoupled Identity and Location

The ACI fabric decouples the tenant endpoint address, its identifier, from the location of the endpoint that is defined by its locator or VXLAN tunnel endpoint (VTEP) address. The following figure shows decoupled identity and location.

上面属于spine交换机,下面属于leaf交换机,spine交换机之间不会连线,leaf交换机之间不能连线,一般是40GB端口,思科支持在一对0M3光纤上支持最长100米传输40Gb 这一点像H3C这种是望尘莫及的

ACI-FUNDAMENTAL.jpg


Forwarding within the fabric is between VTEPs.The mapping of the internal tenant MAC or IP address to a location is performed by the VTEP using a distributed mapping database. After a lookup is done, the VTEP sends the original data packet encapsulated in VXLAN with the Destination Address (DA) of the VTEP on the destination leaf. The packet is then de-encapsulated on the destination leaf and sent down to the receiving host. With this model, we can have a full mesh, loop-free topology without the need to use the spanning-tree protocol to prevent loops.

刚买了个戴尔显示器,带个内置音箱的,使用HDMI接口 但是莫名其妙的就不能设置成为1920*1080的分辨率 设置了就不能全屏显示 看着恶心 设置成为别的分辨率看着又不爽 百度搜了一把 还是设置问题

以下来自网上搜索,确实是改个分辨率,设置一下就OK了 


难度是显示器问题?不是!
难度是HDMI线问题?不是!
难度显卡不支持?也不是!
其实是设置没弄好而已!
解决方法:
1.选择1920*1080 60HZ分辨率
2.AMD VISION Engine Control Center-我的数字平面面板-缩放-选项-过扫描
3.没了,解决了

研究python最大的动力就是使用python进行配置自动下发 第一步就是ssh基本 本次实现功能的登陆一台cisco路由器 执行一个show ip int br并返回结果

找到了paramiko这个函数库 

官方链接为git为  https://github.com/paramiko/paramiko

 官网文档为:http://docs.paramiko.org/en/1.15/

paramiko的意思代表paranoid和friend(不知道是啥逻辑)

官网给出一个最简单的示例

import paramiko, base64
    key = paramiko.RSAKey(data=base64.decodestring('AAA...'))
    client = paramiko.SSHClient()
    client.get_host_keys().add('ssh.example.com', 'ssh-rsa', key)
    client.connect('ssh.example.com', username='strongbad', password='thecheat')
    stdin, stdout, stderr = client.exec_command('ls')
    for line in stdout:
        print '... ' + line.strip('\n')
    client.close()
先安装模块  python-paramiko 发现系统竟然自带
[root@centos python]# yum install python-paramiko
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Loading mirror speeds from cached hostfile
 * base: mirrors.sina.cn
 * extras: mirrors.skyshe.cn
 * updates: mirrors.sina.cn
包 python-paramiko-1.7.5-2.1.el6.noarch 已安装并且是最新版本
无须任何处理

写一个最简单的脚本 ssh一台cisco路由器上,执行show ip int br命令

#!/usr/bin/env python
import paramiko
 
hostname='192.168.18.111'
port=22
username='cisco'
password='cisco'
 
if __name__=='__main__': 
	paramiko.util.log_to_file('paramiko.log')
	s=paramiko.SSHClient()
	s.load_system_host_keys()
	s.connect(hostname,port,username,password)
	stdin,stdout,stderr=s.exec_command('show ip int br')
	print stdout.read()
	s.close()	

第一个是log记录,直接生成在当前目录

第二个就是定义一个类

低三个是load ssh的key

第四个是进行

登陆上之后有一个标准输入,一个标准输出,一个标准错误,

 

第一次因为路由器生产的密钥小于738,导致默认不能使用ssh version 2

报出以下错误

Traceback (most recent call last):
  File "./ssh1.py", line 13, in <module>
    s.connect(hostname,port,username,password)
  File "/usr/lib/python2.6/site-packages/paramiko/client.py", line 295, in connect
    t.start_client()
  File "/usr/lib/python2.6/site-packages/paramiko/transport.py", line 451, in start_client
    raise e
paramiko.SSHException: Incompatible version (1.5 instead of 2.0)

重新再路由器上生成密钥,再执行脚本提示密钥有问题

R3(config)#crypto key generate rsa modulus 1024
% You already have RSA keys defined named R3.cisco.com.
% They will be replaced.
 
% The key modulus size is 1024 bits
% Generating 1024 bit RSA keys, keys will be non-exportable...
*Mar  1 00:17:17.395: %SSH-5-DISABLED: SSH 1.5 has been disabled[OK]
 
R3(config)#
R3(config)#
*Mar  1 00:17:21.447: %SSH-5-ENABLED: SSH 1.99 has been enabled
再次执行
Traceback (most recent call last):
  File "./ssh1.py", line 13, in <module>
    s.connect(hostname,port,username,password)
  File "/usr/lib/python2.6/site-packages/paramiko/client.py", line 306, in connect
    self._policy.missing_host_key(self, hostname, server_key)
  File "/usr/lib/python2.6/site-packages/paramiko/client.py", line 83, in missing_host_key
    raise SSHException('Unknown server %s' % hostname)
paramiko.SSHException: Unknown server 192.168.18.100

重新修改代码 去掉那个s.load_system_host_keys() 改成s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 应该是忽略密钥的问题

暂时不知道啥意思

#!/usr/bin/env python
import paramiko
 
hostname='192.168.18.111'
port=22
username='cisco'
password='cisco'
 
if __name__=='__main__': 
	paramiko.util.log_to_file('paramiko.log')
	s=paramiko.SSHClient()
	s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
	s.connect(hostname,port,username,password)
	stdin,stdout,stderr=s.exec_command('show ip int br')
	print stdout.read()
	s.close()

执行结果为

[root@centos python]# ./ssh2.py 
 
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            192.168.18.111  YES manual up                    up      
FastEthernet0/1            unassigned      YES unset  administratively down down