安装zssh

brew install zssh

上传文件

zssh登陆上跳板机

在跳板机上ssh到相应服务器

在服务器上cd至相应要放上传文件的目录

rz -bye //在远程服务器的相应目录上运行此命令,表示做好接收文件的准备

ctrl+@ //运行上面命令后,会出现一些乱码字符,不要怕,按此组合键,进入zssh

zssh > //这里切换到了本地机器

zssh > pwd //看一下本地机器的目录在那

zssh > ls //看一下有那些文件

zssh > sz 123.txt //上传本地机器的当前目录的123.txt到远程机器的当前目录

下载文件

sz filename //在远程机器上,启动sz, 准备发送文件,看到一堆乱码,不要怕,这会按下组合键

cd 切换到合适的目录

zssh > rz //接住对应的文件

原文:https://blog.csdn.net/shsdfhreh/article/details/73496515


用python脚本传 原文: https://blog.51cto.com/wutengfei/2176738

  1. #!/usr/bin/env python
  2. # coding=utf-8
  3. from optparse import OptionParser
  4. import paramiko
  5. import os,sys,time
  6. """
  7. 这个脚本的作用是实现堡垒机模式下,文件上传
  8. """
  9. parser = OptionParser()
  10. parser.add_option('-j', '--jumperuser', dest='jumperuser', help='Company jumper machine account like wutengfei, ..')
  11. parser.add_option('-u', '--username', dest='username', help='Target machine account like wutengfei, ..')
  12. parser.add_option('-p', '--port', dest='port', help='Target machine port')
  13. parser.add_option('-m', '--hostname', dest='hostname', help='Target machine ip address like 192.168.246.168')
  14. parser.add_option('-l', '--localpath', dest='localpath', help="Client local file path like '/Users/test.py'")
  15. parser.add_option('-d', '--destpath', dest='destpath', help="Jumper server file path like '/tmp/test.py'")
  16. parser.add_option('-t', '--targetpath', dest='targetpath', help="remote server file path like '/tmp/test.py'")
  17. (opts,args) = parser.parse_args()
  18. #定义跳板机信息
  19. jumpername = "jumper.shuju.com" # 跳板机ip/域名
  20. jumperport = 22 # 跳板机ssh端口
  21. paramiko.util.log_to_file('syslogin.log')
  22. class JumperInfo(object):
  23. """
  24. 将文件从客户端上传至跳板机
  25. """
  26. def __init__(self,username,localpath,destpath):
  27. self.username = str(username)
  28. self.localpath = str(localpath)
  29. self.destpath = str(destpath)
  30. def jumper_ftp(self,jumperuser,localpath,destpath):
  31. private_key = os.path.expandvars('$HOME/.ssh/id_rsa')
  32. private_key = paramiko.RSAKey.from_private_key_file(private_key)
  33. t = paramiko.Transport(('jumper.shuju.com', 22))
  34. t.connect(username=jumperuser, pkey=private_key)
  35. sftp = paramiko.SFTPClient.from_transport(t)
  36. sftp.put(localpath,destpath)
  37. sftp.close()
  38. passinfo='\'s password: '
  39. class Jumper_put(JumperInfo):
  40. """
  41. 将跳板机上的文件上传至目标机
  42. """
  43. def __init__(self,hostname,username,port,targetpath):
  44. self.hostname = str(hostname)
  45. self.username = str(username)
  46. self.port = str(port)
  47. self.targetpath = str(targetpath)
  48. def jumper_scp(self,jumperuser,destpath,username,hostname,targetpath,port):
  49. ssh = paramiko.SSHClient()
  50. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  51. privatekey = os.path.expandvars('$HOME/.ssh/id_rsa')
  52. key = paramiko.RSAKey.from_private_key_file(privatekey)
  53. ssh.connect(hostname='jumper.shuju.com', username=jumperuser, port=22, pkey=key)
  54. channel = ssh.invoke_shell()
  55. channel.settimeout(10)
  56. buff = ''
  57. resp = ''
  58. channel.send('scp ' + ' ' + '-P' + ' ' + port + ' ' + destpath + ' ' + username + '@' + hostname + ':' + targetpath + '\n')
  59. while not buff.endswith('$ '):
  60. resp = channel.recv(9999)
  61. if not resp.find(passinfo)==-1:
  62. print 'Error info: Authentication failed.'
  63. channel.close()
  64. ssh.close()
  65. sys.exit()
  66. buff += resp
  67. print buff
  68. channel.close()
  69. ssh.close()
  70. def main():
  71. jumper_ssh = JumperInfo(username=opts.jumperuser,localpath=opts.localpath,destpath=opts.destpath)
  72. jumper_ssh.jumper_ftp(opts.jumperuser,opts.localpath,opts.destpath)
  73. target_ssh = Jumper_put(hostname=opts.hostname,username=opts.username,port=opts.port,targetpath=opts.targetpath)
  74. target_ssh.jumper_scp(opts.jumperuser,opts.destpath,opts.username,opts.hostname,opts.targetpath,opts.port)
  75. if __name__ == '__main__':
  76. if opts.jumperuser == None or opts.username == None or opts.hostname == None or opts.localpath == None or opts.destpath == None or opts.targetpath == None or opts.port == None:
  77. parser.print_help()
  78. exit(-1)
  79. main()

mac 堡垒机传文件的更多相关文章

  1. 通过堡垒机上传文件报错ssh:没有权限的问题

    背景描述 一台有公网IP的主机安装的有jumpserver,假设为A主机,另外几台没有公网ip的主机,假设其中一个为B主机. 操作 1.通过主机A的公网IP和端口等登录到jumpserver的管理员用 ...

  2. 跨越跳板机传文件nc

    从线上服务器与本机互传文件 传输方 nc -l 10000 < a.tar 接收方 nc xx.xx.xx.xx 10000 >a.tar 原理: 文件传输方运行nc,指定端口,设置监听文 ...

  3. Mac 远程上传文件到 Linux

    打开Mac自带终端: 在最顶端选择Shell ->新建远程连接: 选择sftp连接,填好服务器地址: 连接成功后.上传文件,使用 put 命令: put 本地文件路径 远程主机路径

  4. python3 实现堡垒机功能(并发执行命令及上传下载文件)

    转载请注明出处,欢迎提出宝贵意见,谢谢! 功能介绍: 1.主机分组 登录后显示分组主机及主机数量 选择主机组后显示该主机组下所有主机信息,主机名及IP显示输入选择:1.执行命令利用线程并发组内所有主机 ...

  5. 本地Mac通过堡垒机代理实现跨堡垒机scp问题

    近日,公司在跳板机前架设了堡垒机,以防止ssh攻击,但这带来一个问题,我们平常直接ssh跳板机,可以直接使用scp来上传或下载跳板机数据到本地 架设堡垒之后经常使用的scp工具不好用了 于是本期就来解 ...

  6. Mac/Linux/Centos终端中上传文件到Linux云服务器

      1.mac上传文件到Linux服务器  scp 文件名 用户名@服务器ip:目标路径 如:scp /Users/test/testFile test@www.linuxidc.com:/test/ ...

  7. 关于mac 系统如何通过终端 连接linux服务器 并传文件!

    首先要打开终端 mac远程链接服务器 输入  : ssh   root@xxx.xx.xxx.xx xxx.xx.xxx.xx是端口号 后面会要求你输入password 即可远程连接 mac通过终端给 ...

  8. mac 命令行上传文件,mac tar.gz命令压缩

    在mac上可以直接打开命令行给服务器上传文件,注意是本地的命令行,不是服务器的命令行,我就走了绕路 命令可以看这里https://www.cnblogs.com/hitwtx/archive/2011 ...

  9. windows获取本机MAC地址并写入文件的bat

    windows获取本机MAC地址并写入文件的bat MAC(Media Access Control)地址,或称为 MAC地址.硬件地址,用来定义网络设备的位置. bat代码例如以下: @echo o ...

随机推荐

  1. python random模块随机取list中的某个值

    import random from random import randint ''' random.randint()随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值,pyth ...

  2. JS-JSDoc

    http://usejsdoc.org/ 生成 JSDoc 格式的注释: sublime:安装 DocBlockr VSCode:自带 JSDoc 插件

  3. Jeecg_Jflow整合记录

    系统组织机构 t_s_deparselect * from t_s_departselect * from t_s_depart where id='402888fd6a8c24e9016a8c531 ...

  4. 将libvex移植到Visual Studio编译平台下的经验总结

    1. 两难 将libvex从Linux移植到Windows,移植工作聚集于Cross-Compiler,而不是预料的Cross-Platform. VC++ Compiler到目前为止只支持C89标准 ...

  5. nodeType介绍及应用示例

    一,DOM中的节点类型介绍 DOM将一份文档抽象为一棵树,而树又由众多不同类型的节点构成. 元素节点是DOM中的最小单位节点,它包括了各种标签,比如表示段落的p,表示无序列表的ul等. 文本节点总是被 ...

  6. python面试题之如何解决验证码的问题,用什么模块,听过哪些人工打码平台?

    如何解决验证码的问题,用什么模块,听过哪些人工打码平台? PIL.pytesser.tesseract模块 平台的话有:(打码平台特殊,不保证时效性) 云打码 挣码 斐斐打码 若快打码 超级鹰 本文首 ...

  7. Python之向函数传递元组和字典

    也可以在函数定义时加上这两个参数用以接收多余的参数哦~

  8. strings - 显示文件中的可打印字符

    总览 (SYNOPSIS) strings [-a|-|--all] [-f|--print-file-name] [-o] [--help] [-v|--version] [-n min-len|- ...

  9. MySQL的一次优化记录 (IN子查询和索引优化)

    这两天实习项目遇到一个网页加载巨慢的问题(10多秒),然后定位到是一个MySQL查询特别慢的语句引起的: SELECT * FROM ( SELECT DISTINCT t.vc_date, t.c_ ...

  10. MATLAB中图像处理的函数

    表1 图像显示 函数名 功能说明 函数名 功能说明 colorbar 颜色条显示 montage 按矩形剪辑方式显示多帧图像 getimage 从坐标系中获取图像数据 immovie 从多帧索引图像中 ...