linux,  python

Python-连接linux服务器批量执行命令

功能

远程连接多台linux服务器,执行命令。

环境

  • python3
  • paramiko 模块
脚本内容
import paramiko

def get_host(ip,name):
    transport = paramiko.Transport((ip, 22))
    #建立密码连接
    #transport.connect(username=name, password="密码")   
    #免密连接
    private_key = paramiko.RSAKey.from_private_key_file('id_rsa')  #id_rsa是私钥文件,与脚本放在同级目录下。
    transport.connect(username=name,  pkey=private_key)  

    # 创建SSH对象,SSHClient是定义怎么传输命令、怎么交互文件
    ssh = paramiko.SSHClient()
    ssh._transport = transport

    # 执行ifconfig命令,不要执行top之类的在不停的刷新的命令
    stdin, stdout, stderr = ssh.exec_command("hostname")

    # 获取命令结果
    res, err = stdout.read(), stderr.read()
    result = res if res else err
    print(result.decode())

    # 关闭服务器连接
    transport.close()

#定义主机ip,用户名
hosts=[
       '{"ip":"192.168.1.1","name":"root"}',
       '{"ip":"192.168.1.2","name":"centos"}'
       ]

for i in hosts:
    get_host(eval(i)["ip"],eval(i)["name"])

留言

您的电子邮箱地址不会被公开。 必填项已用 * 标注