python实现win机器和centos互传文件

前言:
需求说明:在使用xshell时,发现总是需要注册码,然后提示过期,因为用的是vmware虚拟机,所以对于操作来说,直接在虚拟机上去操作就好了,但是文件无法直接通过vmware进行传输,所以就写了一个数据上传和下载的脚本,如果需要使用,建议不要用pycharm运行,获取数据路径的弹框会报错,直接cmd,在黑框中运行就好了。这个脚本其实可以理解为给centos做了桥接,没有别的功能,就常规的命令运行和文件上行和下载。里边会有需要配置centos的连接配置,没有写成配置文件的方式,所以是直接写死的,写成变量其实也可以,但是没有必要,如果有必要的话,可以自己改一下。代码里边连接centos的方法,没有单独写,因为可能是我只做了操作一台centos的代码,如果需要连接多台centos,可以把连接的方法再单独写出来,降低耦合性。
#输入的文件不可以带.
import paramiko
from tkinter import filedialog,Tk
import re


def get_file():
    root = Tk()
    root.withdraw()
    Fpath = filedialog.askopenfilename()
    file_name = re.findall('/([^/]*?$)',Fpath)
    file_path = Fpath.replace(file_name[0],'')
    return [Fpath,file_path,file_name[0]]

def save_file_path():
    root = Tk()
    root.withdraw()
    Fpath = filedialog.askdirectory()
    return Fpath

def get_connect(args):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    #请自行更改连接配置
    ssh.connect('ip','port','user','name')
    if args == 'rz':
        # filedialog.askopenfilename()
        file_from = get_file()
        file_save_path = input('please input save path:\t')
        sftp_client = paramiko.SFTPClient.from_transport(ssh.get_transport())
        sftp_client.put(file_from[0],file_save_path + file_from[2])
        print('success')
    elif args == 'sz':
        save_file_name = input('please input save path&name:\t')
        file_to = save_file_path()
        file_name = re.findall('/[^/]*?$',save_file_name)
        sftp_client = paramiko.SFTPClient.from_transport(ssh.get_transport())
        sftp_client.get(save_file_name,file_to + file_name[0])
        print('success')

    else:
        stdin,stdout,stderr = ssh.exec_command(args)
        content = stdout.readlines()
        print(content)
    ssh.close()


if __name__ == '__main__':
    while True:
        args = input('please input your commend:\t')
        if args == 'exit':
            break
        else:
            get_connect(args)

如果要做常规操作,在这里还是有一些问题存在,就是每一次运行完成后,就会返回到root目录,所以如果需要多个命令配合使用,请用;分隔开就好了。如:

cd /;ls;pwd

这个写完,后续可以去探讨一下如何同时控制多台服务器同时进行工作,执行相同的命令,或者类似于hadoop一样,进行分布式计算。在一台机器上,将多台机器拥有的能力完全释放出来。到时候任务分配算法也会是一个比较难解决的问题。

还有一个需要解决的问题就是在python中,要不要去尝试把抽出来的数据再构造成b-tree结构,然后进行计算或比较等操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值