放弃之路0x01 Python模块telnetlib
● 使用telnet登陆远程交换机进行配置
(提别提醒,telnetlib在windows环境有问题,显示不出结果)
安装模块:
pip3 install telnetlib 和 loguru(日志模块)
# coding=utf-8
import telnetlib
from loguru import logger
# 先导入模块
host = '192.168.56.100'
# user = 'h3c' # 用户名
password = 'admin' # 密码
tn = telnetlib.Telnet(host)
# tn.read_until(b'Username: ') # 如果有用户名就填写,我这里没有。
# tn.write(user.encode('ascii') + b'\n') # 如果有用户名就填写,我这里没有。
tn.read_until(b'Password: ')
tn.write(password.encode('ascii') + b'\n')
tn.write(b'screen-length disable\n')
# 这条命令可以使所有配置一次打出来,如果没有这条命令打印出来的结果只有小部分。
# 华为使用 screen-length 0 temporary
tn.write(b'sys\n')
tn.write(b'dis ip int br\n')
# tn.write(b'sa\n') # 如果是配置命令记得保存噢!
tn.write(b'return\n')
tn.write(b'exit\n')
a = tn.read_all().decode('ascii')
logger.info(a)
回显效果:
● 下面配置多台交换机
1、如果几个ip用列表还可以,如果成百上千在用列表就不行了。(例:['192.168.56.100','192.168.56.200'])
2、这里使用txt文本,先创建ip_list.txt的文本文件,里面存入需要登陆的IP。
3、使用open打开ip_list.txt,读入里面的IP地址。(with open打开的txt文件不需要在使用close关闭)
4、使用for循环对所有交换机执行命令。
# coding=utf-8
import telnetlib
# from loguru import logger
with open('ip_list.txt', encoding='utf-8') as f: # 打开ip_list.txt
for i in f:
host = i.strip() # strip函数是为了消除IP地址后面的\n
password = 'admin'
tn = telnetlib.Telnet(host)
tn.read_until(b'Password: ')
tn.write(password.encode('ascii') + b'\n')
tn.write(b'sys\n')
tn.write(b'dis ip int br\n')
tn.write(b'return\n')
tn.write(b'exit\n')
print(tn.read_all().decode('ascii'))
# tn.close() # 关闭连接,可以不需要
使用readlines函数读出来发现结尾有个“\n”,使用strip函数消除“\n”
回显效果: