利用Python脚本调用ssh scp命令批量拷贝文件

摘要: 在linux环境下利用python脚本,ssh scp 命令批量拷贝文件到其他机器

在linux环境下利用python脚本,ssh scp 命令批量拷贝文件到其他机器。

#coding:utf-8
import sys,re
import os
import subprocess
import redis

log_redis_name = "log:scp"
log_path = "/data/files"
conn = redis.Redis(host="127.0.0.1", port=6379, password="xxxxxxxxx",db=2)
remote_user = "username"
remote_password = "user_password"
remote_path = "/data/dest/files"
remote_ip = "192.168.222.33"

def hset(key):
    conn.hset(log_redis_name, key, "Y")

def hget(key):
    return conn.hget(log_redis_name, key)

def cp(f):
    cmd = "sshpass -p {password} scp {localsource} {username}@{host}:{remotedest}".format(password=remote_password, username=remote_user, host=remote_ip, localsource=f, remotedest=remote_path)
    val = os.popen(cmd).read()
    print(val)

def walk_folder():
    for f in os.listdir(log_path):
        exist_flag = hget(f)
        print("processing file: " + f + ", is existed: " + str(exist_flag))
        if not exist_flag:
            print("begin to scp file: " + f)
            cp(log_path + "/" + f)
            hset(f) 
    
if __name__ == "__main__":
    walk_folder()

里面用到了redis,可以自己安装,利用redis的目的是因为可以记录成功的文件,如果已经传输成功之后,就不需要传输了。然后可以对这个python脚本做成一个cron 定时任务。

上一篇: Redis与lua脚本配合操作zset的简单例子
下一篇: Redis位运算操作与redisTemplate结合
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号