需求: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)