少年シリーズの運用・保守 - Pythonとシスコ(2)

少年シリーズの運用・保守 - Pythonとシスコ(2)

タスクの概要I.

ネットワークは、今、私たちは完成のpythonを使用する方法、CDPが存在しない場合に、各スイッチにVLAN 10を作成する必要があり、複数のレイヤ2スイッチを管理することができていると?(パイソンは、リモートログインをサポートするほとんどすべてのデバイスに適していることを忘れないでください)

第二に、実装手順を説明します

1)前提

まず準備や記事、スイッチをオンにし、SSH IP、ユーザー名とパスワードを設定するなどの必要性すべてのデバイスの設定をログインしてくださいが一致しています。

2)図のトポロジー。

3)複数のIPを実現する方法

ネットワークデバイスがある場合は、各デバイスのIPアドレスが同じではありません(これはナンセンスである)、どのように我々は、複数のデバイスを記録してから、コマンドにそれを実行するための一つ一つを行くのですか?

アドレスが連続している場合は、Pythonで、我々は個別に達成するためにforループを使用できるように、デバイスの機能にログオン

[root@yunwei cisco]# cat for.py 
for i in range(1,10):
    print '192.168.108.%s' %i

[root@yunwei cisco]
[root@yunwei cisco]# python for.py 
192.168.108.1
192.168.108.2
192.168.108.3
192.168.108.4
192.168.108.5
192.168.108.6
192.168.108.7
192.168.108.8
192.168.108.9

IPが連続していない場合は、どのようにそれを行うには?だから、pythonで、私たちは、すべてのIPはログインを達成するために、ループにループのために行毎にファイルを使用し、その後、ファイルを書き込むことができます。として

[root@yunwei cisco]# cat IP.txt 
192.168.108.252
192.168.108.253
[root@yunwei cisco]
[root@yunwei cisco]# cat for.py 
ip = file('IP.txt','rb')  # 以只读的形式打开文件
for i in ip.xreadlines(): # 逐行读取文件中的内容
    print i,
[root@yunwei cisco]
[root@yunwei cisco]# python for.py 
192.168.108.252
192.168.108.253
[root@yunwei cisco]#

4)マルチコマンドを達成する方法

複数のファイルを一度に実行する方法は?それは我々が複数の機能を送って最後の時間のように使用することができますが、そのような効率が低すぎることは明らかです。私たちは、ファイルを書き込みコマンド行毎にファイルを読み込むためにforループを使用して、実行することができます。として

[root@yunwei cisco]# cat command.txt 
conf t 
vlan 10
name V10
vlan 20
name V20
vlan 30
name V30
vlan 40
name V40
vlan 50
name V50
vlan 60
name V60
vlan 70
name V70
vlan 80
name V80
vlan 90
name V90
vlan 100
name V100
exit
int e0/0
switchport trunk encapsulation dot1q
switchport mode trunk
end
show vlan 

show int trunk

[root@yunwei cisco]# 
[root@yunwei cisco]# cat for.py 
cmd = file('command.txt','rb')
for i in cmd.xreadlines():
    print i,
[root@yunwei cisco]# 

最後のスクリプト

ここでは簡単な注釈であることを、詳細なメモは、最初の記事を参照してください。

import paramiko # 导入模块
import time
user = 'yunwsn' # 定义登录用户名
passwd = '123456' # 定义登录密码
s = paramiko.SSHClient() # 实例化
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
IP = file('IP.txt','rb'# 打开IP文件
for ip in IP.xreadlines(): # 循环IP文件
    s.connect(ip,username=user,password=passwd,look_for_keys=False,allow_agent=False)      # 登录读取到的IP文件行
    print '[ \033[0;32m success\033[0m ] login %s ' %ip  # 打印登录成功信息
    cmd = s.invoke_shell()     # 交互式sshell
    command = file('command.txt','rb'# 因为上面已经登录成功,这里打开命令文件
    for command in command.xreadlines(): # 逐行读取命令
        cmd.send(command)  # 执行命令
        time.sleep(0.1)
        output = cmd.recv(65535# 每执行一个命令就打印一次
        print output

    cmd.close() # 一个IP命令执行完毕,关闭交互式shell,循环下一个ip
IP.close() # 全部Ip执行完成,则关闭IP文件

(図の可動)結果は次の通りであります

ログインして、結果を確認

マイクロチャンネル公共数:運用・保守ティーンエイジャー


おすすめ

転載: blog.51cto.com/xiaowangzai/2406526