关于python远程ssh操作多台服务器

日常工作中会遇到很多在不同的机器做相同的操作,首先我们会想到挨个机器去操作,当然这也是一种方式,

但是万一要操作很多台,既费时又费力 还容易出错,那么接下来python帮你搞定

首先我们需要安装 paramiko

pip install paramiko

接下来介绍 一下paramiko

这个包呢主要是SSHClient和SFTPClient;看组件名我们应该就知道ssh 是linux中远程连接的 ftp是文件传输

我们就可以根据自己的需要来选取组件了

一:首先我们来介绍SSHClient 操作:

   1.ssh连接操作呢 分为俩种:

    1.1:通过生成的ssh秘钥来连接:

           

import paramiko
# ssh秘钥文件路径
private_key_path = '/root/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)
# 构建ssh客户端
ssh = paramiko.SSHClient()
# 自动保存策略
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务端 ip自己跟换
ssh.connect(127.0.0.1, 22, 'root', key)
# 执行ls 命令
stdin, stdout, stderr = ssh.exec_command('ls')
# 获取执行的内容
res = unicode_utils.to_str(stdout.read())

1.2:通过主机密码来连接需要用到Transport:

import paramiko
 
# 创建一个通道
transport = paramiko.Transport(('hostname', 22))
# 设置连接用户名密码
transport.connect(username='root', password='root')
# 构建客户端
ssh = paramiko.SSHClient()
ssh._transport = transport 
stdin, stdout, stderr = ssh.exec_command('ls')
print(stdout.read().decode('utf-8')) 
transport.close()

然后看一下我使用的,我是把很多机器配置公钥为了让另一台机器可以免密登录 


import paramiko

private_key_path = '/root/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(private_key_path)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 多台主机ip
host = [ip1,ip2,ip3]
# 把***** 写入到每台机器的authorized_keys中
for h in host:
    print h
    ssh.connect(h, 22, 'root', key)
    stdin, stdout, stderr = ssh.exec_command('echo ssh-rsa ***** >>  /root/.ssh/authorized_keys')

  

发布了15 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36546907/article/details/105576405