python多线程批量操作交换机
2024-09-08 18:38:24
import time
import socket
import threading
def device_info():
ip_list = []
name_list = []
user_list = []
passwd_list = []
f = open('devices_list.txt',encoding='UTF-8')
for line in f.readlines():
line_s = line.split()
device_ip = line_s[0]
device_name = line_s[1]
username = line_s[2]
passwd = line_s[3]
ip_list.append(device_ip)
name_list.append(device_name)
user_list.append(username)
passwd_list.append(passwd)
f.close()
return ip_list,name_list,user_list,passwd_list
def ssh_f(ip,name,user,passwd):
data = time.strftime('%Y-%m-%d')
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip, username=user, password=passwd)
print('成功连接', ip, name,'\n')
cmd_file = open('cmd.txt', 'r')
cmds = cmd_file.readlines()
log = open(r'D:\BaiduNetdiskDownload\test\巡检日志\\' + ip + name + data + '.txt', 'a')
command = ssh_client.invoke_shell()
command.send('terminal length 0\n') # 取消单屏显示
for cmd in cmds:
command.send(cmd+'\n')
time.sleep(1)
output = command.recv(65535)
log.write(output.decode('UTF-8'))
print(ip + '日志载入成功'+'\n')
ssh_client.close()
log.close()
def main():
device_authentication_failed_list = []
device_not_reachable_list = []
ip_list,name_list,user_list,passwd_list = device_info()
for ip,name,user,passwd in zip(ip_list,name_list,user_list,passwd_list): # 遍历多个列表可以用zip
try:
a = threading.Thread(target=ssh_f,args=(ip,name,user,passwd))
a.start()
except paramiko.ssh_exception.AuthenticationException:
print(name + '(' + ip + ')' + '身份验证登录失败..')
device_authentication_failed_list.append(ip)
except socket.error:
print(name + '(' + ip + ')' + ' 网络无法访问..')
device_not_reachable_list.append(ip)
time.sleep(5)
print('\n以下设备身份验证登录失败: ')
if device_authentication_failed_list == []:
print('nothing')
else:
for i in device_authentication_failed_list:
print(i)
print('\n网络无法访问以下设备:')
if device_not_reachable_list == []:
print('nothing')
else:
for i in device_not_reachable_list:
print(i)
if __name__ == '__main__':
main()
最新文章
- Asp.Net MVC3 简单入门详解过滤器Filter(转)
- Python中的list和tuple
- python安装supervisor
- Spring Framework------>;version4.3.5.RELAESE----->;Reference Documentation学习心得----->;Spring Framework概述
- 汉诺塔(河内塔)算法 ----C语言递归实现
- canvas像素操作
- 【HDU 5387】Clock
- Java:标示符 基本数据类型
- 搭建hdfs服务器集群的搭建+trash
- 浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘。
- oracle记录各登陆主机用户名,登陆ip,所执行的命令
- ABP Zero源码
- Java之面向对象例子(二)
- Java连接数据库完整代码 查找和插入
- MII、RMII、GMII接口的详细介绍【转】
- 【Keil5 MDK】armar工具的基本用法(armar --help)
- 4.3 使用 SQL 语句操作数据框
- 一、HTML概述 	二、web相关的概念 	三、HTML的常用标签
- poj 3685 二分
- 2017-2018-1 20155330《信息安全技术》实验二——Windows口令破解