色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

python練手小程序

網(wǎng)絡技術干貨圈 ? 來源:網(wǎng)絡技術干貨圈 ? 2023-01-09 09:49 ? 次閱讀

如果管理網(wǎng)絡設備很多,不可能靠人力每天去登錄設備去查看是否在線。所以,可以利用python腳本通過每天掃描網(wǎng)絡中的在線設備??梢圆渴鹪诜掌魃献龀啥〞r任務,每天發(fā)送AAA巡檢報告。

下面是我寫的一個python練手小程序。用來掃描一個網(wǎng)段中的在線主機,并嘗試AAA去登錄。統(tǒng)計一個大網(wǎng)段內(nèi)可以成功aaa登錄的主機。

注意:

該程序只是測試小程序,還有些小bug需要解決。不是通用的程序。主要提供一個大致思路。

主要用到了python-nmap, paramiko庫。

程序大概思路:

  1. 利用nmap掃描一個指定網(wǎng)段,只做ping掃描,所以前提所管理的設備中ping必須開啟。獲取存活設備IP列表。
  2. 利用paramiko庫模擬ssh去登錄個IP,如果登錄成功,返回設備名稱,并及將設備名稱和對應ip寫入文件。

代碼示例:

#-*-coding:utf-8-*-

importnmap
importdatetime
importparamiko
importre

defget_name(host,user,password,port=22):
client=paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#client.connect(host,port,user,password,allow_agent=False,look_for_keys=False,timeout=5)
try:
client.connect(ip,port,user,password,allow_agent=False,look_for_keys=False,timeout=3)
exceptExceptionaserr:
return0,str(err)
#getshell
ssh_shell=client.invoke_shell()

dev_name=''
whileTrue:
line=ssh_shell.recv(1024)
ifline.endswith(b'>'):#華為華三
dev_name=re.findall(r'<(.*)>',str(line))[0]
#dev_name=str(line)[3:-2]
break
ifline.endswith(b'#')|line.endswith(b'#'):#思科
dev_name=re.findall(r'[\r\n|\r]+(.*)#',str(line))[0]
break
ifline.endswith(b'>'):
if'ConnetOS'instr(line):#分流器
dev_name=re.findall(r'[\r\n|\r]+(.*)>',str(line))[0].strip()
if'@'instr(line):#junpier防火墻
dev_name=re.findall(r'@(.*)>',str(line))[0].strip()
break
#怎么跳出recv阻塞
ssh_shell.close()
return1,dev_name


#print('掃描時間:'+res['nmap']['scanstats']['timestr']+'
命令參數(shù):'+res['nmap']['command_line'])

defget_ip_list(hosts):
nm=nmap.PortScanner()
#nmap填入?yún)?shù)列表可以填很多
res=nm.scan(hosts=hosts,arguments='-sn-PE')
#count=res['nmap']['scanstats']['uphosts']#存活的主機數(shù)
returnlist(res['scan'].keys())#存活主機IP地址


if__name__=='__main__':
start=datetime.datetime.now()
user='user'
password='password'
hosts='10.0.0.0/24'
dev={}#存放AAA登錄成功的主機
f=open('ip_list.txt','w')#存放能ping通的IP
ip_list=get_ip_list(hosts)
end=datetime.datetime.now()
#f.write("存活的IP地址有:"+ str(len(ip_list))+"
")
#f.write("程序運行時間:"+ str(end-start)+'
')
foripinip_list:
f.write(ip+'
')
f.close()
#print(ip_list)
login_failed_count=0
f1=open('login_succeed.txt','w',encoding='utf-8')
f2=open('login_failed.txt','w',encoding='utf-8')
f3=open('mtil_add.txt','w',encoding='utf-8')
#ip_list=ip_list.split('
')
foripinip_list:
ok,dev_name=get_name(ip,user,password)
ifok==1:
ifdev_namenotindev.keys():
vendor=''
print(dev_name+"		"+ip)
if'h'indev_name[-12:]:
vendor='h3c'
elif'c'indev_name[-12:]:
vendor='cisco'
elif'w'indev_name[-12:]:
vendor='huawei'
else:
vendor='unknow'
f1.write(dev_name+'		'+ip+'	'+vendor+'
')
f1.flush()
dev.update({dev_name:ip})
else:
f3.write(dev_name+'		'+str(dev[dev_name])+''+ip+'
')
print(dev_name+'		'+str(dev[dev_name])+''+ip+'
')
dev.update({dev_name:[dev[dev_name],ip]})
f3.flush()
else:
login_failed_count+=1
print(dev_name)
f2.write(dev_name+'		'+ip+'
')
f2.flush()
end=datetime.datetime.now()
f1.write('AAA登錄成功'+str(len(dev))+'臺
')
f1.write('AAA登錄失敗'+str(login_failed_count)+'臺
')
f1.write("程序運行時間:"+str(end-start)+'
')
f1.close()
f2.close()
f3.close()

print("程序運行時間:"+str(end-start)+'
')
print("存活的IP地址有:"+str(len(ip_list))+"
")
print("AAA登錄成功:"+str(len(dev))+"
")
print('AAA登錄失敗'+str(login_failed_count)+'臺
')

這個小程序例子,只是一個大概思路。

可以添加或則改善的思路:

  • 比想要獲取設備名,可以通過snmp,知道ip地址和snmp讀團體名就可以直接獲取。
  • 可以將獲取到的數(shù)據(jù)存入數(shù)據(jù)庫中,從而可以做更的事情。
  • 通過類似代碼,也可以實現(xiàn)每天去設備上備份網(wǎng)絡配置等功能。
  • 可以將利用掃描結(jié)果,添加更多處理邏輯,生成每日巡檢日報,通過郵件或者短信發(fā)送。

nmap庫使用:

nmap工具使用可參考:nmap掃描工具學習筆記

如果在windows上寫nmap庫,有兩個事要解決。

第一步:安裝nmap軟件

因為在python程序中,nmap包所調(diào)用的是nmap可執(zhí)行程序,所以必須先安裝nmap軟件。nmap下載地址:https://nmap.org/download.html

第二步: 需要在nmap庫中文件的init方法中添加的nmap.exe的路徑。

不然會報錯,提示找不到nmap。

在nmap.py的class PortScanner()中的__init__()中更改:

def__init__(self,nmap_search_path=('nmap','/usr/bin/nmap','/usr/local/bin/nmap','/sw/bin/nmap','/opt/local/bin/nmap',r"D:software
map-7.80
map.exe")):

主要添加了‘r"D:software map-7.80 map.exe", nmap.exe可執(zhí)行文件路徑。


importnmap
nm=nmap.PortScanner()
#nmap填入?yún)?shù)列表可以填很多
res=nm.scan(hosts=hosts,arguments='-sn-PE')

其他使用示例:

#!/usr/bin/envpython
importnmap#importnmap.pymodule
nm=nmap.PortScanner()#instantiatenmap.PortScannerobject
nm.scan('127.0.0.1','22-443')#scanhost127.0.0.1,portsfrom22to443
nm.command_line()#getcommandlineusedforthescan:nmap-oX--p22-443127.0.0.1
nm.scaninfo()#getnmapscaninformations{'tcp':{'services':'22-443','method':'connect'}}
nm.all_hosts()#getallhoststhatwerescanned
nm['127.0.0.1'].hostname()#getonehostnameforhost127.0.0.1,usualytheuserrecord
nm['127.0.0.1'].hostnames()#getlistofhostnamesforhost127.0.0.1asalistofdict
#[{'name':'hostname1','type':'PTR'},{'name':'hostname2','type':'user'}]
nm['127.0.0.1'].hostname()#gethostnameforhost127.0.0.1
nm['127.0.0.1'].state()#getstateofhost127.0.0.1(up|down|unknown|skipped)
nm['127.0.0.1'].all_protocols()#getallscannedprotocols['tcp','udp']in(ip|tcp|udp|sctp)
nm['127.0.0.1']['tcp'].keys()#getallportsfortcpprotocol
nm['127.0.0.1'].all_tcp()#getallportsfortcpprotocol(sortedversion)
nm['127.0.0.1'].all_udp()#getallportsforudpprotocol(sortedversion)
nm['127.0.0.1'].all_ip()#getallportsforipprotocol(sortedversion)
nm['127.0.0.1'].all_sctp()#getallportsforsctpprotocol(sortedversion)
nm['127.0.0.1'].has_tcp(22)#isthereanyinformationforport22/tcponhost127.0.0.1
nm['127.0.0.1']['tcp'][22]#getinfosaboutport22intcponhost127.0.0.1
nm['127.0.0.1'].tcp(22)#getinfosaboutport22intcponhost127.0.0.1
nm['127.0.0.1']['tcp'][22]['state']#getstateofport22/tcponhost127.0.0.1(open

審核編輯 :李倩



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9295

    瀏覽量

    85862
  • 網(wǎng)絡設備

    關注

    0

    文章

    318

    瀏覽量

    29730
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    84945
  • 小程序
    +關注

    關注

    1

    文章

    239

    瀏覽量

    12210

原文標題:網(wǎng)絡設備那么多,我用Python定時掃描網(wǎng)絡中的在線設備,每天發(fā)送AAA巡檢報告

文章出處:【微信號:網(wǎng)絡技術干貨圈,微信公眾號:網(wǎng)絡技術干貨圈】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Python Connector for InterBase連接解決方案

    適用于 InterBase 的 Python 連接器 Python Connector for InterBase 是一種可靠的連接解決方案,用于從 Python 應用程序訪問 Int
    的頭像 發(fā)表于 01-22 14:34 ?70次閱讀

    使用Python實現(xiàn)xgboost教程

    使用Python實現(xiàn)XGBoost模型通常涉及以下幾個步驟:數(shù)據(jù)準備、模型訓練、模型評估和模型預測。以下是一個詳細的教程,指導你如何在Python中使用XGBoost。 1. 安裝XGBoost
    的頭像 發(fā)表于 01-19 11:21 ?347次閱讀

    ID讀卡器Python程序開發(fā)

    液顯ID讀卡器UDP協(xié)議開發(fā)Python程序。代碼如下: ? # pip install netifacesimport subprocessimport structimport
    的頭像 發(fā)表于 01-10 16:05 ?101次閱讀

    入門?畢設?競賽?項目練手?STM32/嵌入式/物聯(lián)網(wǎng)學習,有這幾款開發(fā)板就夠了!

    學習、項目練手、創(chuàng)新競賽、技能認證等。01STM32入門+項目進階學習適用場合高校教學、學生畢設、個人學習、項目練手、創(chuàng)新競賽、技術認證可學習技術基于HAL庫的STM
    的頭像 發(fā)表于 10-10 16:31 ?383次閱讀
    入門?畢設?競賽?項目<b class='flag-5'>練手</b>?STM32/嵌入式/物聯(lián)網(wǎng)學習,有這幾款開發(fā)板就夠了!

    pytorch和python的關系是什么

    在當今的人工智能領域,Python已經(jīng)成為了最受歡迎的編程語言之一。Python的易學易用、豐富的庫和框架以及強大的社區(qū)支持,使其成為了數(shù)據(jù)科學、機器學習和深度學習等領域的首選語言。而在深度學習領域
    的頭像 發(fā)表于 08-01 15:27 ?2199次閱讀

    Python建模算法與應用

    上成為理想的腳本語言,特別適用于快速的應用程序開發(fā)。本文將詳細介紹Python在建模算法中的應用,包括常見的建模算法、Python在建模中的優(yōu)勢、常用庫以及實際案例。
    的頭像 發(fā)表于 07-24 10:41 ?632次閱讀

    Python在AI中的應用實例

    Python在人工智能(AI)領域的應用極為廣泛且深入,從基礎的數(shù)據(jù)處理、模型訓練到高級的應用部署,Python都扮演著至關重要的角色。以下將詳細探討Python在AI中的幾個關鍵應用實例,包括機器學習、深度學習、自然語言處理、
    的頭像 發(fā)表于 07-19 17:16 ?1299次閱讀

    如何實現(xiàn)Python復制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會看到一些用 Python 實現(xiàn)文件復制的特殊方法。下面我們開始學習這九種不同的方法來實現(xiàn) Pyt
    的頭像 發(fā)表于 07-18 14:53 ?458次閱讀

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV-Python
    的頭像 發(fā)表于 07-16 10:38 ?1351次閱讀

    python訓練出的模型怎么調(diào)用

    Python中,訓練出的模型可以通過多種方式進行調(diào)用。 1. 模型保存與加載 在Python中,訓練好的模型需要被保存,以便在其他程序或會話中使用。以下是一些常用的模型保存和加載方法。 1.1
    的頭像 發(fā)表于 07-11 10:15 ?2212次閱讀

    用pycharm進行python爬蟲的步驟

    以下是使用PyCharm進行Python爬蟲的步驟: 安裝PyCharm和Python 首先,您需要安裝PyCharm和Python。PyCharm是一個流行的Python集成開發(fā)環(huán)境
    的頭像 發(fā)表于 07-11 10:11 ?922次閱讀

    python讀取stm32串口讀不了是哪里的問題?

    =ser.readlines()print(s) 可是什么都讀取不了。如果用買的STM32開發(fā)板送的串口助手,能接收到數(shù)據(jù)。板子上燒錄的printf輸出程序。 請問各位大神,Python程序要怎么寫才能讀取串口數(shù)據(jù)呢?跪求大神解
    發(fā)表于 04-24 08:07

    Python怎么讀取STM32串口數(shù)據(jù)?

    =ser.readlines()print(s) 可是什么都讀取不了。如果用買的STM32開發(fā)板送的串口助手,能接收到數(shù)據(jù)。板子上燒錄的printf輸出程序。 請問各位大神,Python程序要怎么寫才能讀取串口數(shù)據(jù)呢?跪求大神解
    發(fā)表于 04-24 07:30

    基于Python的地圖繪制教程

    本文將介紹通過Python繪制地形圖的方法,所需第三方Python相關模塊包括 rasterio、geopandas、cartopy 等,可通過 pip 等方式安裝。
    的頭像 發(fā)表于 02-26 09:53 ?1285次閱讀
    基于<b class='flag-5'>Python</b>的地圖繪制教程

    如何使用linux下gdb來調(diào)試python程序

    如何使用linux下gdb來調(diào)試python程序? 在Linux下,可以使用GDB(GNU調(diào)試器)來調(diào)試Python程序。GDB是一個強大的調(diào)試工具,可以幫助開發(fā)者診斷和修復
    的頭像 發(fā)表于 01-31 10:41 ?2713次閱讀
    主站蜘蛛池模板: 二次元美女扒开内裤喷水 | 国产强奷糟蹋漂亮邻居在线观看 | 在线观看免费小视频 | 在线亚洲中文字幕36页 | 韩国电影real在线观看完整版 | 中文字幕亚洲综合小综合在线 | 国产毛片女人高潮叫声 | 欧美九十老太另类 | 丝瓜影院观看免费高清国际观察 | 伊人久久青青 | 性肥胖BWBWBW | bl肉yin荡受np各种play | 久久er国产精品免费观看2 | 琪琪午夜福利免费院 | 中文字幕一区二区三区在线观看 | 在线视频免费观看 | writeas雷狮直播 | 极品少妇小泬50PTHEPON | 国产A级毛片久久久久久久 国产a级黄色毛片 | 色戒西瓜视频 | 欧美片内射欧美美美妇 | 向日葵视频app下载18岁以下勿看 | 久久国语露脸精品国产 | 亚州AV中文无码乱人伦在线 | 暖暖 免费 高清 日本视频5 | 2017天天拍天天拍香蕉视频 | 欧洲精品不卡1卡2卡三卡四卡 | 果冻传媒在线观看资源七夕 | 国产精品久久人妻无码网站一区无 | 国产精品99久久久久久AV | 久久婷婷丁香五月色综合啪免费 | 久久黄色免费网站 | 国产传媒在线播放 | 久久日本片精品AAAAA国产 | 乌克兰内射私拍 | 91九色网址 | 青青草原在线新免费 | 国产GV天堂亚洲国产GV刚刚碰 | 兽交白浆喷水高潮 | 竹菊精品久久久久久久99蜜桃 | 欧美黑人巨大性极品hd欧 |