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()