python-远程操作linux(命令执行+执行结果打印+文件上传下载)
一、下载三方包
【1】pip install paramiko
二、代码执行
【1】在代码最后需要加上sys.exit()--原因不明,否则会报错:AttributeError: 'NoneType' object has no attribute 'time'
# -*- coding:utf-8 -*-
# __author__:pansy
# 2022/5/14
import sys
import paramiko
# 创建ssh对象(客户端)
ssh = paramiko.SSHClient()
# 设定连接方式
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 将主机名、新主机密钥添加
# 发起远程连接
ssh.connect('x.x.x.x',22,'x','x')
# 在远程执行linux命令,用字符串的形式传递命令,exec_command会返回三个参数
stdin,stdout,stderr = ssh.exec_command('pwd')
# 打印执行结果,读取出来的stdout内容可以用read读取,但是是b类型,需要转换成字符串
print(stdout.read().decode('utf8'))
ssh.close()
sys.exit()
三、文件上传下载
# -*- coding:utf-8 -*-
# __author__:pansy
# 2022/5/14
import paramiko
# 创建ssh对象(客户端)
ssh = paramiko.SSHClient()
# 设定连接方式
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 将主机名、新主机密钥添加
# 发起远程连接
ssh.connect('*.*.*.*',22,'root','*')
# 创建sftp对象
sftp = ssh.open_sftp()
# 从远程下载文件到本地:linux上的文件路径,本地存储的路径
sftp.get('/home/log4j2.xml','./log4j2.xml')
# 将本地文件传送到远程linux:本地文件路径,linux上的存储路径
sftp.put('/Users/panshaoying/Desktop/database/远程操作linux/log4j2.xml','/home/log4j2.xml')