Python自动化库之paramiko

paramiko库是用来连接远程服务器并令远程服务器进行操作的一个库,安装paramiko只需要利用pip命令 pip install paramiko

安装好了之后进行导入import paramiko

import paramiko

#第一步需要创建一个ssh连接
ssh_client = paramiko.SSHClient()
#然后需要设置授权
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 上面两行代码不用动
# 然后进行正式连接,hostname就是服务器的ip,port默认22,username和password就是你的服务器用户名和密码
ssh_client.connect(hostname='47.96.176.251', port=22, username='hello', password='达咩达咩')
# 建立连接之后可以通过下面一行语句进行判断是否能够正常运行
stdin, stdout, stderr = ssh_client.exec_command('ls')
# stdout是运行命令之后返回的结果,如果运行出错的话stderr会存储错误信息,正常情况下stdout,stderr只会有一个变量有内容(要么正常运行,结果给stdout,
# 要么报错,结果给stderr)
print(stdout.read().decode('utf-8'))
# 关闭连接
ssh_client.close()

运行结果如下,在linux服务器执行的命令结果返回给本地主机

Python自动化库之paramiko_第1张图片

再举个例子,运行另外一个命令

import paramiko


ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname='47.96.176.251', port=22, username='111', password='hello')
stdin, stdout, stderr = ssh_client.exec_command('ls -lah')
stdin1, stdout1, stderr1 = ssh_client.exec_command('pwd')
print(stdout.read().decode('utf-8'))
print(stdout1.read().decode('utf-8'))
ssh_client.close()

 结果如下Python自动化库之paramiko_第2张图片

 --------------------------------------------------------------------------------------------------------------------------------上面是paramiko执行linux命令的代码,paramiko还可以把本地文件上传到服务器上,下面看一下上传操作

import paramiko
# 定义一个上传函数
def send_file(ip,username,password):
    # 指定上传之后的路径,文件放在服务器的哪个目录下
    path = '/home/langhaozhe/code/homework'
    # 用户名密码没啥好说的
    username = username
    password = password
    # 这里是建立一个传输连接,Transport函数里需要传入ip和端口,采用我这个默认的方式即可
    tran = paramiko.Transport((ip, 22))
    # 传输连接起来
    tran.connect(username=username, password=password)
    # 默认不用管
    sftp = paramiko.SFTPClient.from_transport(tran)
    # 本地文件的位置,可以采用绝对路径或者相对路径,这里我的targetFile和我的代码在同一目录下,如果在不同目录下可以用绝对路径,
    # 例如D:\临时文件\数据运维期末作业\targetFile.py
    local_path = "targetFile.py"
    # 远程存放地址,在path下
    remote_path = path + '/targetFile.py'
    # 上传
    sftp.put(local_path, remote_path)
    # 关闭
    tran.close()
    print(f'服务器{ip}推送完成')

 一个执行命令一个上传操作,这两个操作足以应对大多数的问题,如果还有任何疑惑,欢迎评论区或者私信问我。

你可能感兴趣的:(自动化,服务器,运维)