paramiko模块

发布时间 2023-08-30 11:10:20作者: 星空看海

paramiko模块

  • ssh链接操作linux机器,远程执行命令
  • 上传、下载文件

远程执行命令

# https://www.cnblogs.com/blueberry-mint/p/16851862.html
import paramiko

SSH_CONFIG = {
    'hostname': '10.0.0.101',  # ip
    'port': 22,  # 端口
    'username': 'root',  # 用户名
    'password': '123',  # 密码
}


def main():
    # 建立ssh连接
    ssh_client = paramiko.SSHClient()  # 实例化SSHClient对象
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 设置自动添加策略
    ssh_client.connect(**SSH_CONFIG)  # 连接SSH服务端,以用户名和密码进行认证

    # 开启一个Channel并执行命令
    stdin, stdout, stderr = ssh_client.exec_command('hostname')  # stdout为正确输出,stderr为错误输出,同时只有1个变量有值
    print(stdout.read().decode('utf-8'))  # 打印返回的stdout
    ssh_client.close()  # 关闭SSHClient


if __name__ == '__main__':
    main()


# linux命令
ip addr  # 查看机器ip
hostname  # 查看主机名
cat /etc/hostname  # 主机名位置
ps aux |grep redis  # 过滤redis进程,可以每隔10秒去查看这个进程,返回结果用正则匹配,看redis是否正常进行

上传和下载文件

import paramiko


def main():
    tran = paramiko.Transport(('10.0.0.101', 22))  # 获取Transport实例
    tran.connect(username="root", password='123456')  # 连接SSH服务端
    sftp_client = paramiko.SFTPClient.from_transport(tran)  # 实例化SFTPClient对象

    # 设置上传的本地/远程文件路径
    local_path = "./a.txt"
    remote_path = "/home/aa.txt"

    sftp_client.put(local_path, remote_path)  # 上传
    print("上传成功")
    # sftp_client.get(remote_path, local_path)  # 下载
    # print("下载成功")
    tran.close()  # 关闭


if __name__ == '__main__':
    main()