一.配置文件
hosts.ini文件内容:
192.168.1.9,root,123456,22 192.168.1.19,root,123456,22
二.运行的d代码;
"""
从远程linux服务器下载文件到本机
remote_catalog, #远程服务器目录
local_catalog, #本地文件目录
hostname, #远程主机名或ip地址
username="root", #远程主机 用户名
password="root", #远程主机密码
port=22 #远程ssh端口
"""
import os
import paramiko
def download_filetolocal(remote_catalog,local_catalog,hostname,username="root",password="root",port=22):
client=paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
client.connect(hostname,username=username,password=password,port=port)
#获取传输实例
tran=client.get_transport()
sftp=paramiko.SFTPClient.from_transport(tran)
print(remote_catalog)
#在远程服务器上执行的命令,重点的内容
# logslists=sftp.listdir(remote_catalog)
logslists=[] #"组装路径+文件名 " -->形成一个列表,需要从服务器上下载的文件
logsname =[logfile for logfile in sftp.listdir(remote_catalog)]
for logonefile in logsname:
newpathlog=remote_catalog+"/"+logonefile
logslists.append(newpathlog)
print("remote :",logslists)
for xiazailog in logslists:
#拼接本地存储文件的格式组成,把自己的日志放到自己的目录下 ;本地目录+自己的ip文件夹+文件名;
savelogname = os.path.join(local_catalog,hostname,os.path.basename(xiazailog))
#利用paramiko的函数下载远程服务的文件名,到本地的文件名
sftp.get(xiazailog, savelogname)
client.close()
if __name__ == '__main__':
local_path = os.getcwd()
# remote_catalog = "/home/log"
remote_catalog = input("请输入要下载的linux服务的目录路径如: /var/log:").strip()
with open("./hosts.ini") as lines:
for line in lines:
line = line.strip()
hostname, username, password, port = line.split(",")
print(hostname + "cmd ret: ")
#创建以ip为文件名的文件夹,后续把各自日志存放在自己的目录下
if not os.path.exists(hostname):
os.makedirs(hostname)
print("=" * 50)
download_filetolocal(remote_catalog,local_path,hostname,username=username,password=password,port=port)
暑期编程PK赛
得CSDN机械键盘等精美礼品!


