python斷網重連腳本
① 用python編寫與mysql資料庫連接並實現斷線重連的問題
conn本來 就已經被你定義成了 函數, conn.ping()當然不存在了。而且你要的資料庫連接c,還被手動關閉了。我覺得有兩點
1. 按照你這個腳本的情況,你用一次,就新建一個資料庫連接問題應該不大。
2. 要保持使用一個連接的話。把c作全局變數 c=MySQLdb.connect(user="root",passwd="12345",host="localhost",db="yingtest")
使用的時候,直接用c但是不要close,當然要先判斷這個連接是否已經斷開了,如是再重新連一次。
或者把連接放到一個連接池裡面,用的時候直接去連接池裡面取。連接池可以看看 DBUtils模塊
你說的conn.ping() 看看是不是在c裡面,c=MySQLdb.connect(user="root",passwd="12345",host="localhost",db="yingtest")就是這個對象裡面,看看有沒有判斷連接是否斷開的方法。 因為沒用過 MySQLdb模塊。
② python 腳本被意外打斷之後(比如開網頁但是斷網了)如何從當前工作現場繼續運行
如果你只想運行一次,那麼不用循環幾乎是不可能的。當然你用crontab之類的定時任務來處理也可以。我猜想你登陸之後應該是要做一些操作的,那麼在做任何操作之前你都去判斷一下登陸狀態,如果session過期或者其他原因導致登陸狀態失效,那麼就執行重登陸。
把腳本丟在後台執行,結果輸出到log,應該沒什麼問題的。
③ Python網路編程6-使用Pysnmp實現簡單網管
簡單網路管理協議SNMP(Simple Network Management Protocol)用於網路設備的管理。SNMP作為廣泛應用於TCP/IP網路的網路管理標准協議,提供了統一的介面,從而實現了不同種類和廠商的網路設備之間的統一管理。
SNMP協議分為三個版本:SNMPv1、SNMPv2c和SNMPv3。
SNMP系統由網路管理系統NMS(Network Management System)、SNMP Agent、被管對象Management object和管理信息庫MIB(Management Information Base)四部分組成。
SNMP查詢是指NMS主動向SNMP Agent發送查詢請求,如圖1-3所示。SNMP Agent接收到查詢請求後,通過MIB表完成相應指令,並將結果反饋給NMS。SNMP查詢操作有三種:Get、GetNext和GetBulk。SNMPv1版本不支持GetBulk操作。
不同版本的SNMP查詢操作的工作原理基本一致,唯一的區別是SNMPv3版本增加了身份驗證和加密處理。下面以SNMPv2c版本的Get操作為例介紹SNMP查詢操作的工作原理。假定NMS想要獲取被管理設備MIB節點sysContact的值,使用可讀團體名為public,過程如下所示:
SNMP設置是指NMS主動向SNMP Agent發送對設備進行Set操作的請求,如下圖示。SNMP Agent接收到Set請求後,通過MIB表完成相應指令,並將結果反饋給NMS。
不同版本的SNMP Set操作的工作原理基本一致,唯一的區別是SNMPv3版本增加了身份驗證和加密處理。下面以SNMPv3版本的Set操作為例介紹SNMP Set操作的工作原理。
假定NMS想要設置被管理設備MIB節點sysName的值為HUAWEI,過程如下所示:
SNMPv1和SNMPv2c的Set操作報文格式如下圖所示。一般情況下,SNMPv3的Set操作信息是經過加密封裝在SNMP PDU中,其格式與SNMPv2c的Set操作報文格式一致。
SNMP Traps是指SNMP Agent主動將設備產生的告警或事件上報給NMS,以便網路管理員及時了解設備當前運行的狀態。
SNMP Agent上報SNMP Traps有兩種方式:Trap和Inform。SNMPv1版本不支持Inform。Trap和Inform的區別在於,SNMP Agent通過Inform向NMS發送告警或事件後,NMS需要回復InformResponse進行確認。
在Ensp中搭建網路環境,在R2上啟用SNMP作為SNMP agent,Linux主機作為NMS;為方便觀察SNMP報文格式,在R2使用SNMP的版本為v2c。
通過下面的Python腳本獲取R2的系統信息與當前的主機名
運行結果如下
在R2介面上抓包結果如下,Linux主機向R2的161埠發送SNMP get-request報文,可以看到SNMP使用的版本為v2c,設置的團體名為public,隨機生成了一個request-id,變數綁定列表(Variable bindings),即要查詢的OID,但Value為空;值得注意的是這些信息都是明文傳輸的,為了安全在實際環境中應使用SNMPv3。
通過下面的Python腳本獲取R2的介面信息。
運行結果如下:
在R2介面抓包結果如下,getBuikRequest相比get-request設置了一個max-repetitions欄位,表明最多執行get操作的次數。Variable bindings中請求的OID條目只有一條。
下面Python腳本用於設置R2的主機名為SNMPv2R2。
運行結果如下
在路由器上可以看到主機名有R2變為了SNMPv2R2。
get-response數據包內容與set-request中無異。
下面Python腳本用於接收,R2發送的Trap,並做簡單解析。
先運行該腳本,之後再R2上手動將一個介面shutdown,結果如下:
介面上抓包結果如下,此時團體名用的是public,data部分表明是trap。
由於Ensp中的通用路由器認證演算法只支持des56,而pysnmp不支持該演算法,因此使用AR路由器配置SNMPv3。
使用下面Python腳本發送snmpv3 get報文獲取設備系統信息。
抓包結果如下,首先發送get-resques進行SNMPv3認證請求,隨機生成一個msgID,認證模式為USM,msgflgs中Reportable置1要求對方發送report,其他為置0,表示不進行加密與鑒權;另外安全參數,認證參數、加密參數都為空,此時不攜帶get請求數據。
路由器給NMS回復report,msgID與resquest一致,Msgflgs中各位都置0,同時回復使用的安全引擎,認證與加密參數為空,不進行認證與加密,因此能看到data中的數據。
AR1收到請求後進行回復,數據包中msgflags標志位中除reportable外其他位都置1,表示不需要回復,同時進行加密與鑒權。同樣也可以看到認證用戶為testuser,認證參數與加密參數都有填充,data部分也是同樣加密。
參考:
什麼是SNMP - 華為 (huawei.com)
AR100-S V300R003 MIB參考 - 華為 (huawei.com)
SNMP library for Python — SNMP library for Python 4.4 documentation (pysnmp.readthedocs.io)
④ python自動化--破解wifi密碼
本文提到的爆破方式其實效率很低(因為每次都要重連wifi), 可以拿來做簡單破解, 比如自己寫個密碼字典: 八個6,六個8,1到8...之類的幾十個簡單密碼. 然後跑這個腳本.
如果追求高效爆破. 建議使用Aircrack-ng, 它是通過抓wifi連接數據包, 然後爆破抓到的包數據....抓到連接包之後的工作全部是本地運行, 只要不心疼電腦, 破解速度比這個腳本快了無數倍.
准備材料:
⑤ python腳本,TCP客戶端斷開連接,伺服器一直收到空白消息,如何正常斷開二者連接見下圖
建議:
1、當點擊客戶端的斷開按鈕,給服務端發送一個stop消息,然後客戶端停止發送
2、當服務端收到客戶端的stop消息,即停止接收該客戶端發來的消息
所以你的這個if判斷語句的xxxx應該由客戶端發過來做判斷。