最近在學習python語言,想著通過一些實際應用來學習可以回事理解,所以想到批量配置管理企業內部的思科交換機。
python是一門解釋性語言比較高階有很多的基礎庫和第三方開發庫,現在開發環境也比較熱門。
1. 怎麼安裝python環境這裡就說了,這裡是基於python2.7.5開發的,安裝好python後還需要安裝可以配置交換機基礎庫paramiko, 這個模組可以與很多態別的交換機連線。
安裝方式:
1. 先安裝pip,再安裝paramiko庫
curl "" -o "get-pip.py"
python get-pip.py
pip install paramiko
2. 安裝好之後可以在專案裡面通過import paramiko來引用這個庫介面
#!/usr/bin/env python
import paramiko
3.通過專案例項來實現批量配置思科交換機:
# -*- coding: utf-8 -*-
import ciscolib
def main():
password="wfweb2kd"
username="root"
enable_pwd="c#andphp"
for ip in open('sw2960.txt').readlines():
ip = ip.strip()
if username != "":
switch = ciscolib.device(ip, password, username, enable_pwd)
else:
switch = ciscolib.device(ip, password, enable_password=enable_pwd)
try:
switch.connect()
print("logged into %s,successful" % ip)
except ciscolib.authenticationerror as e:
print("couldn't connect to %s: %s" % (ip, e.value))
continue
except exception as e:
print("couldn't connect to %s: %s" % (ip, str(e)))
continue
switch.enable(enable_pwd)
switch.cmd("clock set 18:42:30 22 apr 2019")
switch.cmd("conf t")
switch.cmd("service password-encryption")
switch.cmd("username admin secret admin123") #//這裡只是測試,實際環境不要這樣
switch.cmd("line vty 0 4")
switch.cmd("login local")
switch.cmd("crypto key generate rsa")
switch.cmd("\n")
#//這裡只是測試最好是一條一條測試好了再上批量,這裡踩了乙個坑。
switch.cmd("end")
switch.cmd("wri mem")
switch.disconnect()
if __name__ == '__main__':
main()
4.配置成功之後可以通過ssh方式來連線配置,上面配置目的是啟動交換機的 ssh加密連線22,但是這裡也要注意有些交換機是沒有ssh模組的也就是沒有的。
[sw2960#]crypto key generate rsa
5.配置ssh來配置交換機:
#!/usr/bin/env python
import paramiko
import time
import getpass
import sys
import socket
username = raw_input("使用者名稱:")
password = getpass.getpass("密碼:")
ip_file = sys.ar**[1]
cmd_file = sys.ar**[2]
switch_with_authentication_issue =
switch_not_reachable =
f = open(ip_file,'r')
for line in f.readlines():
try:
ip = line.strip()
ssh_client = paramiko.sshclient()
ssh_client.set_missing_host_key_policy(paramiko.autoaddpolicy())
ssh_client.connect(hostname=ip,username=username,password=password,look_for_keys=false)
print "你已經成功連線到: ", ip
command = ssh_client.invoke_shell()
cmdlist = open(cmd_file,'r')
cmdlist.seek(0)
for line in cmdlist.readlines():
command.send(line + "\n")
time.sleep(2)
cmdlist.close()
output = command.recv(65535)
print output
except paramiko.ssh_exception.authenticationexception:
print "使用者認證失敗的" + ip + "."
except socket.error:
print ip + "不可達,請檢查網路."
f.close()
ssh_client.close
print '\n 以下交換機認證失敗:'
for i in switch_with_authentication_issue:
print i
print '\n 以下交換機網路不可達:'
for i in switch_not_reachable:
print i
下面貼出來,ip檔案和命令檔案寫法:
執行結果 :
運維自動化
1,cobbler安裝環境準備 安裝epel epel release 6 8.noarch.rpm x86 64 epel release 6 8.noarch.rpm x86 安裝系列依賴環境 要是區域網用,建議關閉iptables 或是放行25151 80 69埠 和關閉selinux 檢視狀...
自動化運維
考慮的因素 源 打包為映象 發布到映象庫 利用k8s發布到物理機器執行,以服務的形式對外提供服務 目前的做法 0 建立乙個執行遠端命令的框架 1 每個應用建立乙個部署檔案指令碼 a 指定元 位址 c 同步源 到目標主機 d 接受指令碼引數 vername 2 版本號,映象tag fromport 3...
Python 自動化運維 pycurl
web服務質量 1.服務可用性 2.服務響應速度 2.例項 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ...