需求:SecureCRT是網絡運維人員常用的一個軟件工具,但是每次修改3A密碼后,所有保存在SecureCRT里面會話的密碼都要修改,看了網絡的一些修改方法,有些讓你破解原密碼的,有些是linux的修改方式,所以寫個腳本分析給廣大網工,用於修改網絡主機的SecureCRT密碼;復制粘貼就可以使用,轉載記得粘貼出處
修改原理:我們需要把SecureCRT的Sessions密碼全部換成新密碼就行了,但是這個密碼是加密的
SecureCRT的配置文件通常以.ini文件命名,保存在Sessions目錄里面,該目錄可以通過Options-> Global Options-> General-> Configuration Paths里面查看,打開配置文件可以看到保存的用戶名Username和密碼Password V2選項;我們可以先修改自己的3A密碼,然后登錄一台主機A作為模板機,登錄的時候SecureCRT會提示密碼錯誤,然后輸入新密碼后,這台主機A的這個A.ini配置文件里面的密碼就是加密后的新密碼,我們要把這個密碼復制替換自己SecureCRT的Sessions里面所有會話的密碼部分;那樣就可以解決自己不知道加密后密碼問題。
Python配置腳本以及該腳本的用法說明
只需要復制該腳本,把file_path_base的路徑指向自己修改過新密碼的主機配置,inrootpath的路徑指向SecureCRT的Sessions目錄,然后執行該腳本即可;
溫馨提示:作為運維人員,要時刻懂得備份配置,記得備份自己原本的Sessions目錄,萬一炸鍋了還能恢復一下,同理這個腳本也可以用來修改linux主機的密碼,只是要自己稍作修改
參考:Python批量修改SecureCRT會話密碼 - baby神 - 博客園 (cnblogs.com)
搜索批量修改SecureCRT密碼基本是搜到這篇,只是一開始我沒認真看他的代碼,他代碼寫的比我簡潔多了,我只是實現了功能,代碼基本原理就是遍歷整個目錄,修改.ini文件里面的密碼
1 import os 2 def change_crtPw(file_path_base, inrootpath): 3 """ 4 :param file_path_base: 以那個配置文件的密碼為基准 5 :param inrootpath: CRT的session目錄路徑 6 :return: 無返回值 7 """ 8 f = open(file_path_base) # 返回一個文件對象 9 for line in f: 10 try: 11 #需要提取出這個文件的密碼,Monitor Password好像是沒啥用的,反正套路都一樣,需要提取啥都在這寫,但是這個continue要寫上,不然下面會重復匹配到這個 12 if line.find("\"Monitor Password V2\"") != -1: 13 Monitor_PW = line.split("=")[1].strip() 14 continue 15 #這個才是真的需要修改的密碼,就是去你的基准文件里面,找到加密后的密碼,沒必要自己寫個算法去破解再加密;同理你也可以匹配出用戶名來 16 if line.find("\"Password V2\"") != -1: 17 PW = line.split("=")[1].strip() 18 break 19 except Exception as e: 20 print('獲取基准配置文件失敗') 21 22 #遍歷整個文件目錄 23 for root, dirs, files in os.walk(inrootpath): 24 for file in files: 25 file_path = os.path.join(root, file) 26 # 這段代碼的用處是把其他需要修改密碼的文件配置抓出來,同時把密碼修改為新密碼,存在temp_config中 27 with open(file_path, 'r', encoding='utf-8') as tf1: 28 temp_config = '' 29 for t_line in tf1: 30 try: 31 if t_line.find("\"Monitor Password V2\"") != -1: 32 temp_Monitor_PW = t_line.split("=")[1].strip() 33 t_line= t_line.replace(temp_Monitor_PW, Monitor_PW) 34 temp_config += t_line 35 continue 36 if t_line.find("\"Password V2\"") != -1: 37 temp_PW = t_line.split("=")[1].strip() 38 t_line= t_line.replace(temp_PW, PW) 39 temp_config += t_line 40 continue 41 temp_config += t_line 42 except Exception as e: 43 print('修改{}配置失敗'.format(file)) 44 #這段代碼的意思是把修改過的配置文件全部寫回到文件中,這樣會清空原配置文件,重寫配置 45 with open(file_path, 'w', encoding='utf8') as f: 46 f.write(temp_config) 47 f.flush() 48 print('修改{}配置成功'.format(file)) 49 50 #基准配置文件,就是你這個配置文件的密碼是准確的;這個地方是CRT的Session里面你修改過密碼的一份主機配置文件 51 file_path_base = r"XXX\XXX.ini" 52 # CRT的SESSION目錄,這個地方路徑是sessions的目錄 53 inrootpath = r'xxx\xxx\Sessions' 54 change_crtPw(file_path_base, inrootpath)