奇技淫巧:在 ssh 里面把服务器的文本复制到本地电脑

2024-05-15 13:08

本文主要是介绍奇技淫巧:在 ssh 里面把服务器的文本复制到本地电脑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

阅读本文大概需要 2 分钟。

使用 macOS 的同学,应该熟悉一个命令pbcopy,它可以在命令行中把一段内容写入到剪贴板,例如:

echo "kingname" | pbcopy

就能把字符串kingname复制到剪贴板里面。我们也可以使用这个方法把一个文件中的内容写入到剪贴板:

cat xxx.txt | pbcopy

这样我们就不需要把文件打开再手动复制的。

有时候,我要把服务器上面的日志复制下来。原来都是进入服务器以后,用 vim 打开日志文件,用鼠标选中再复制。且不说服务器是 Linux,没有pbcopy这个命令,即使有这个命令,服务器上又怎么能访问本地的剪贴板呢?

在网上一搜,竟然还真有办法。使用OSC52实现iTerm2远程pbcopy - 风雪之隅[1]这篇文章借助 iterms 的一个功能和几个特殊的字符,通过 php 实现了这个功能。我们来把它改写成 Python 版本。

首先打开 iterms 的设置,把方框框住的这一项勾上:

然后,在 iterms 里面,通过 ssh 连上服务器。

然后,我们来写一段 Python 代码:

import base64print('\033]52;c;' + base64.b64encode('青南'.encode()).decode() + '\007')

然后在服务器上运行这段代码,运行效果如下图所示:

什么都没有打印出来?但不要担心,现在,你随便找一个可以打字的输入框,按下键盘上面的Command +V键。你会发现,青南两个字竟然被粘贴出来了!

有了这个机制,我们就来人工写一个pbcopy.py,接收管道的输入:

其中, #! /usr/bin/python3 是远程服务器上面 Python 的地址。你可以通过命令 which python3 找到这个地址。

保存完成以后,给他添加可执行权限:chmod +x pbcopy.py

现在,我们试一试把远程的多行文本复制到本地的剪贴板中:

我这里复制的就是这个代码自身。大家也可以使用其他文件来测试。复制完成以后,我们随便找个地方粘贴,发现复制成功!

现在,我们使用软连接,把这个可执行文件变得更像命令一些:

sudo ln -s /home/ubuntu/pbcopy.py /usr/bin/pbcopy

运行效果如下图所示:

完美满足要求。

需要注意的是,这个程序会把管道输入的所有内容全部接收完成以后才会复制,所以,如果你输入的文本内容太大,可能会撑爆内存。

参考资料

[1]

使用OSC52实现iTerm2远程pbcopy - 风雪之隅: https://www.laruence.com/2020/05/21/5880.html

推荐阅读

1

超全!我把 Python 的 200个标准库整理出来了

2

牛逼!GitHub 耗时整整一年开发的代码扫描工具终于上线了!

3

脑洞大开!假如将苹果发布会改成 C++ 发布会...

4‍‍

怎样才算一个计算机知识体系完整的毕业生

这篇关于奇技淫巧:在 ssh 里面把服务器的文本复制到本地电脑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991892

相关文章

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

录音功能在哪里? 电脑手机等设备打开录音功能的技巧

《录音功能在哪里?电脑手机等设备打开录音功能的技巧》很多时候我们需要使用录音功能,电脑和手机这些常用设备怎么使用录音功能呢?下面我们就来看看详细的教程... 我们在会议讨论、采访记录、课堂学习、灵感创作、法律取证、重要对话时,都可能有录音需求,便于留存关键信息。下面分享一下如何在电脑端和手机端上找到录音功能

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4: