windows与Linux实时传输数据,I01 物理隔离条件下Windows与Linux服务器的文件传输脚本...

title: I01 物理隔离条件下Windows与Linux服务器的文件传输脚本author: Adolph Leecategories: 进阶tags:

paramiko打怪升级mathjax: false

e9638417528b94013302233dbd2f756e.png

背景

在工作环境中,为了网络与数据传输的安全性、保密性。服务器往往与办公室网络环境存在物理隔离条件,一般是通过专线进行文件传输与程序部署。且并不是每一台服务器都可以通过专线直接连通,(例如仅开放堡垒机端口或使用虚机的情况)。因此每一次上传或下载文件都需要经过sftp…sftp…一系列繁琐的操作,让文件在不同的机器间流转。为了简化这一步骤,在保证网络安全的情况下,帮助我能够方便的上传下载文件,就抽空编写了一个小脚本,简化文件传输的步骤。下面就简单说一下实现原理。

语言与框架

shellPythonPython paramiko库网络拓扑图

通常我需要将文件从PC上传至虚机或从虚机下载到PC

cf966c2098f58c62c9f688297aa52ace.png

利用Python在window操作系统操作Linux

这里使用了Python的paramiko库需要注意的是paramiko不支持通过windows连接到linux以后再次连接到另一台linux主机。因此paramiko仅仅解决了我们的第一步从PC到堡垒机的问题。而后面的问题,则需要通过shell脚本去解决,至于选择使用shell而不是python的原因就是,我们不需要到每一台机器上去部署对应的python环境(如果使用python2则不受这个限制)关键点共有三个通过windows执行linux命令。windows及linux之间文件的上传及下载利用shell脚本ssh连接另一台主机之后完成比较复杂的操作在下面两个示例中,我们都是通过显式的连接方式去连接操作系统,而paramiko是支持通过密钥的方式进行连接。在实际应用中我采用的即为通过密钥连接,详细的使用方法,可以参阅官方文档。

通过windows执行linux命令

import paramiko as pmkhost = { "host":"***.***.***.***", "port":"****", "user":"****", "passwd":"********"}client = pmk.SSHClient()client.set_missing_host_key_policy(pmk.AutoAddPolicy())client.connect(hostname=host['host'], port=host['port'], username=host['user'], password=host['passwd'])cmd = 'sh /***/*****.sh'# 需要执行的语句stdin, stdout, stderr = client.exec_command(cmd) # 执行client.close()

c73d3e96019b9df5a980f8b0508cf36d.png

通过windows上传或下载文件到linux

import paramiko as pmkhost = { "host":"***.***.***.***", "port":"****", "user":"****", "passwd":"********"}trans = pmk.Transport(sock=(host['host'], int(host['port'])))trans.connect(username=host['user'], password=host['passwd'])sftp = pmk.SFTPClient.from_transport(trans)sftp.put('shell/***.sh','/***/****/***.sh')sftp.close()

b82a0e56086867de8e192c7c9477b86c.png

利用shell进行远程连接(适用复杂操作)

#!/bin/sh\nssh ***.***.***.*** -p**** > /dev/null 2>&1 << eeooffsh /***/****.shsh /***/****.shsh /***/****.shsh /***/****.shexiteeooff

5709232b060006ae44d3761ba2559823.png

利用shell进行远程连接(适用简单操作)

ssh ***.***.***.*** -p**** "sh /***/***/***.sh && df -Th"

ef9b95ab7b52bdcf93d30665b905ab98.png

总而言之,通过强大的python,经过小半天的折腾之后,也是成功完成了一键从本地PC到虚机的文件传输任务。并且支持一键初始化以及主机的可配置化。用起来感觉还不错,也算是解放了双手。有相同困扰的朋友可以试一试。

转载请注明出处

举报/反馈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值