chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

python練手小程序

網(wǎng)絡(luò)技術(shù)干貨圈 ? 來源:網(wǎng)絡(luò)技術(shù)干貨圈 ? 2023-01-09 09:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

如果管理網(wǎng)絡(luò)設(shè)備很多,不可能靠人力每天去登錄設(shè)備去查看是否在線。所以,可以利用python腳本通過每天掃描網(wǎng)絡(luò)中的在線設(shè)備。可以部署在服務(wù)器上做成定時(shí)任務(wù),每天發(fā)送AAA巡檢報(bào)告。

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

注意:

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

主要用到了python-nmap, paramiko庫(kù)。

程序大概思路:

  1. 利用nmap掃描一個(gè)指定網(wǎng)段,只做ping掃描,所以前提所管理的設(shè)備中ping必須開啟。獲取存活設(shè)備IP列表。
  2. 利用paramiko庫(kù)模擬ssh去登錄個(gè)IP,如果登錄成功,返回設(shè)備名稱,并及將設(shè)備名稱和對(duì)應(yīng)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('掃描時(shí)間:'+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']#存活的主機(jī)數(shù)
returnlist(res['scan'].keys())#存活主機(jī)IP地址


if__name__=='__main__':
start=datetime.datetime.now()
user='user'
password='password'
hosts='10.0.0.0/24'
dev={}#存放AAA登錄成功的主機(jī)
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("程序運(yùn)行時(shí)間:"+ 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))+'臺(tái)
')
f1.write('AAA登錄失敗'+str(login_failed_count)+'臺(tái)
')
f1.write("程序運(yùn)行時(shí)間:"+str(end-start)+'
')
f1.close()
f2.close()
f3.close()

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

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

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

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

nmap庫(kù)使用:

nmap工具使用可參考:nmap掃描工具學(xué)習(xí)筆記

如果在windows上寫nmap庫(kù),有兩個(gè)事要解決。

第一步:安裝nmap軟件

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

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

不然會(huì)報(bào)錯(cuò),提示找不到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)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    14

    文章

    10344

    瀏覽量

    91737
  • 網(wǎng)絡(luò)設(shè)備

    關(guān)注

    0

    文章

    352

    瀏覽量

    30905
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4882

    瀏覽量

    90290
  • 小程序
    +關(guān)注

    關(guān)注

    1

    文章

    243

    瀏覽量

    13445

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

文章出處:【微信號(hào):網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號(hào):網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用PYTHON進(jìn)行的跨平臺(tái)仿真

    內(nèi)部的解決方案,而且還允許跨平臺(tái)模擬,以從其他程序或編程語(yǔ)言獲益,并結(jié)合熟悉物理光學(xué)特性的VirtualLab Fusion,從而擴(kuò)展模擬、優(yōu)化、設(shè)計(jì)和后處理的選項(xiàng)。 因此,我們正在深入研究
    發(fā)表于 04-02 08:21

    [VirtualLab] 使用Python運(yùn)行VirtualLab Fusion光學(xué)仿真

    摘要 VirtualLab Fusion允許Python外部訪問其建模技術(shù)、求解器和結(jié)果。這個(gè)用例介紹了一種使用路徑變量和Visual Studio代碼將Python連接到VirtualLab
    發(fā)表于 03-31 09:39

    [VirtualLab] 使用Python進(jìn)行跨平臺(tái)參數(shù)掃描

    摘要 VirtualLab Fusion允許外部訪問其建模技術(shù)、求解器和結(jié)果。這有助于應(yīng)用其他數(shù)據(jù)處理或優(yōu)化工具來進(jìn)一步研究光學(xué)模擬。在本示例中,我們演示如何使用Python腳本運(yùn)行參數(shù)掃描,以及
    發(fā)表于 03-31 09:36

    如何在 VisionFive 上使用 Python 包?

    VisionFive Fedora 下的本地目錄,請(qǐng)?jiān)谠创a目錄下執(zhí)行以下命令: 提示:源代碼可從以下位置下載:愿景五.gpio. sudo yum install python
    發(fā)表于 03-30 08:28

    安裝 Python VisionFive_GPIO失敗是哪里出了問題?

    盡管按照最新的文檔,我在安裝 VisionFive.gpio 包時(shí)仍然收到錯(cuò)誤 sudo apt 安裝 libxml2-dev libxslt-dev python3 -m pip 安裝請(qǐng)求
    發(fā)表于 02-11 06:13

    Python運(yùn)行本地Web服務(wù)并實(shí)現(xiàn)遠(yuǎn)程訪問

    本文介紹使用Python搭建本地Web服務(wù)并結(jié)合 ZeroNews 實(shí)現(xiàn)公網(wǎng)訪問。
    的頭像 發(fā)表于 02-06 11:39 ?313次閱讀
    <b class='flag-5'>Python</b>運(yùn)行本地Web服務(wù)并實(shí)現(xiàn)遠(yuǎn)程訪問

    沒有專利的opencv-python 版本

    所有 官方發(fā)布的 opencv-python 核心版本(無 contrib 擴(kuò)展)都無專利風(fēng)險(xiǎn)——專利問題僅存在于 opencv-contrib-python 擴(kuò)展模塊中的少數(shù)算法(如早期 SIFT
    發(fā)表于 12-13 12:37

    Termux中調(diào)試圣誕樹Python代碼

    在Termux中調(diào)試Python代碼(以圣誕樹立例)非常簡(jiǎn)單,核心分為環(huán)境準(zhǔn)備、代碼編寫、運(yùn)行調(diào)試三個(gè)步驟,下面一步步教你操作: 一、環(huán)境準(zhǔn)備(首次使用需做) Termux默認(rèn)可能沒有Python
    發(fā)表于 12-09 09:02

    LABVIEW 2023 Q1調(diào)用python后一直報(bào)錯(cuò)1671

    LABVIEW 2023Q1調(diào)用python后一直報(bào)錯(cuò)1671報(bào)錯(cuò)信息:PythonNode_AddTwoDoubles.vi中的打開Python會(huì)話Python returned
    發(fā)表于 11-12 09:51

    Python調(diào)用API教程

    兩個(gè)不同系統(tǒng)之間的信息交互。在這篇文章中,我們將詳細(xì)介紹Python調(diào)用API的方法和技巧。 一、用Requests庫(kù)發(fā)送HTTP請(qǐng)求 使用Python調(diào)用API的第一步是發(fā)送HTTP請(qǐng)求,通常
    的頭像 發(fā)表于 11-03 09:15 ?1150次閱讀

    termux調(diào)試python猜數(shù)字游戲

    用termux做一個(gè)猜數(shù)字游戲 下面是在Termux中創(chuàng)建猜數(shù)字游戲的步驟及完整實(shí)現(xiàn)方案,結(jié)合Python實(shí)現(xiàn)(最適配Termux環(huán)境): ? 一、環(huán)境準(zhǔn)備(Termux基礎(chǔ)配置) 1.
    發(fā)表于 08-29 17:15

    termux如何搭建python游戲

    termux如何搭建python游戲 Termux搭建Python游戲開發(fā)環(huán)境的完整指南 一、Termux基礎(chǔ)環(huán)境準(zhǔn)備 Termux是一款無需root即可在安卓設(shè)備上運(yùn)行的Linux終端
    發(fā)表于 08-29 07:06

    python app不能運(yùn)行怎么解決?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    發(fā)表于 08-06 06:27

    基礎(chǔ)篇3:掌握Python中的條件語(yǔ)句與循環(huán)

    Python編程語(yǔ)言中,條件語(yǔ)句和循環(huán)是構(gòu)成復(fù)雜邏輯和數(shù)據(jù)處理的基石。本篇基礎(chǔ)教程將幫助您深入了解Python中的條件語(yǔ)句和循環(huán)結(jié)構(gòu),讓您能夠更好地控制程序流程。 條件語(yǔ)句 條件語(yǔ)句允許程序
    發(fā)表于 07-03 16:13

    跟老齊學(xué)Python:從入門到精通

    礎(chǔ)的學(xué)習(xí)者介紹一門時(shí)下比較流行、并且用途比較廣泛的編程語(yǔ)言,所以,本書讀起來不晦澀,并且在其中穿插了很多貌似與Python 編程無關(guān),但與學(xué)習(xí)者未來程序員職業(yè)生涯有關(guān)的內(nèi)容。 獲取完整文檔資料可下載附件哦?。。。?如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持一下哦~
    發(fā)表于 06-03 16:10