client = paramiko.SSHClient()
The authenticity of host '172.25.254.254 (172.25.254.254)' can't be established.
ECDSA key fingerprint is 4c:98:51:43:65:46:66:fd:af:5b:ea:cc:d9:97:c0:74.
Are you sure you want to continue connecting (yes/no)?
#自动选择yes
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
client.connect(
hostname='172.25.254.110',
username='root',
password='redhat'
#执行操作
#标准输入 标准输出 标准错误
stdin,stdout,stderr = client.exec_command('route -n')
#获取命令的执行结果
print(stdout.read().decode('utf-8'))
#关闭连接
client.close()
题目要求:
批量连接主机,若能连接请获取主机名,若不能请返回错误原因
操作如下:
为了获取批量的主机ip、用户一及用户密码,我们可以将其写在一个文件中,为方便获取,如下所示:
代码块:
from paramiko.ssh_exception import NoValidConnectionsError,AuthenticationException
def connect(cmd,hostname,user,password):
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(
hostname=hostname,
username=user,
password=password
stdin, stdout, stderr = client.exec_command(cmd)
a = stdout.read().decode('utf-8')
print(stdout.read().decode('utf-8'))
return a
except NoValidConnectionsError as e:
return '主机%s连接失败' %(hostname)
except AuthenticationException as e:
return '主机%s密码错误' %(hostname)
except Exception as e:
return '未知错误:',e
finally:
client.close()
with open('/tmp/hosts') as f:
for line in f:
hostname,username,password = line.strip().split(':')
res = connect('hostname',hostname,username,password)
# print(hostname.center(50,'*'))
print('主机名:', res)
程序及运行结果:
题目要求:基于ssh用于连接远程服务器做操作:远程执行命令代码块:import paramiko#创建一个ssh对象client = paramiko.SSHClient()"""The authenticity of host '172.25.254.254 (172.25.254.254)' can't be established.ECDSA key fingerprint...
paramiko是什么? 基于ssh用于连接远程服务器做操作:远程执行命令, 上传文件, 下载文件
import paramiko
#ssh root@172.25.254.250
创建一个ssh对象;
client = paramiko.SSHClient()
2. 解决问题:如果之前没有;连接过的ip, 会出现
#Are you sure you want to continue connec...
Python中的
paramiko是一个非常有用的模块,通过此模块,可以
远程操控
多台服务器,无需在服务器上安装任何东西,只需要在代码执行机器上有Python,
paramiko环境就可以了,对于需要
多台服务器协同工作或者要管理
多台服务器的情况下非常有帮助。
以下为代码示例
1、使用paramiko库的SSHClient方法从而使用SSH的主机管理功能。
2、使用threading,python下的多线程库,进行多主机多线程管理,实现并发执行管理。
3、使用sys库的argv方法,使其python脚本在服务器下命令化
4、使用time库的clock方法计算命令执行所用的时间
局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的。现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件,拷贝某些文件,批量关机等。如果一台一台得手工去操作,费时又费力,如果要进行多个操作就更麻烦啦。
或许你会想到网络同传,网络同传是什么?就是在一台电脑上把电脑装好,配置好,然后利用某些软件,如“联想网络同传”把系统原样拷贝过去,在装系统时很有用,只要在一台电脑上装好,同传以后所有的电脑都装好操作系统了,很方便。同传要求所有电脑硬件完全相同,在联想的电脑上装的系统传到方正电脑上肯定会出问题的。传系统
1.调用函数:
from
paramiko.ssh_exceptionimportNoValidConnectionsError,AuthenticationException
2.定义函数:三个参量,分别为hostname,username,password,分别代表
远程主机的ip,登录用户和
密码
3.
远程连接
4.排错异常
5.打开文件,里边有我想要
连接的
主机的ip,用户,
密码
操作如...