#-*- coding:utf-8-*-import paramiko
import datetime
import os
ip ='172.30.6.21'
username ='root'
cmd="hostname"
def auth(func):
def wrapper(*args,**keargs):for n inrange(3):try:
res =func(*args,**keargs)return res
except Exception as e:if n <2:print('%s\tError\t%s'%(args[0], e))print('输入密码错误请重新输入!')else:print('%s\tError\t%s'%(args[0], e))
res =bytes('\033[0;31m主机登陆失败,继续下一主机\033[0m', encoding='utf-8')return res
return wrapper
2、 调用装饰器实现登陆验证
@auth # 装饰器 最多输入三次密码
def ssh2(ip,username,cmd):
passwd =input('请输入主机(%s) %s用户密码:'%(ip, username))
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22, username, passwd, timeout=5)
stdin, stdout, stderr = ssh.exec_command(cmd)
out = stdout.read()return out
a =ssh2(ip,username,cmd)print(a.decode())