IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    使用 Linux 服务器同步 Mac 和 Windows 剪切板

    血衫非弧の一存发表于 2024-08-25 00:00:00
    love 0

    在我日常工作中,Mac 和 Windows 设备分别位于两个不同的 NAT 网络下,它们之间无法直接通信。然而,我经常需要同步这两台设备的剪切板内容。

    为了解决这个问题,我创建了一个方案,利用一台 Linux 服务器作为中转节点。通过 SSH 连接,Mac 和 Windows 分别将各自的剪切板内容上传至服务器,并从服务器获取对方的剪切板内容。

    需要特别说明的是,这个脚本仅支持同步简单的文字内容,无法处理图片或文件。如果需要同步这些类型的内容,我通常使用 FTP 工具进行共享。

    Mac

    #!/bin/bash
    
    # 临时文件路径
    TEMP_FILE="/tmp/clipboard_sync.txt"
    
    # 从 Linux 服务器下载剪切板内容到本地临时文件
    sshpass -p 'Abcd1234' ssh user@1.2.3.4 "cat /tmp/remote_clipboard.txt" > "$TEMP_FILE"
    
    # 将本地剪切板内容上传到 Linux 服务器
    pbpaste | sshpass -p 'Abcd1234' ssh user@1.2.3.4 "cat > /tmp/remote_clipboard.txt"
    
    # 将临时文件内容拷贝到本地剪切板
    cat "$TEMP_FILE" | pbcopy
    

    Windows

    @echo off
    chcp 65001 >nul
    
    :: 临时文件路径
    set TEMP_FILE=%TEMP%\clipboard_sync.txt
    
    :: 从 Linux 服务器下载剪切板内容到本地临时文件
    plink -ssh -pw Abcd1234 -batch user@1.2.3.4 "cat /tmp/remote_clipboard.txt" > "%TEMP_FILE%"
    :: if exist "%TEMP_FILE%" (
    ::     echo Clipboard content downloaded successfully to %TEMP_FILE%.
    :: ) else (
    ::     echo Failed to download clipboard content.
    :: )
    
    :: 将本地剪切板内容上传到 Linux 服务器
    powershell -command "Get-Clipboard" | plink -ssh -pw Abcd1234 -batch user@1.2.3.4 "cat > /tmp/remote_clipboard.txt"
    
    :: 将临时文件内容拷贝到本地剪切板
    powershell -command "Get-Content -Raw '%TEMP_FILE%' | Set-Clipboard"
    
    :: echo Script execution completed.
    :: pause
    
    • plink 是 PuTTY 提供的命令行工具,可以用于 SSH 连接,并支持通过命令行参数传递密码。
    • 注释的一些内容可以打开作为 debug 排查问题。
    • 注意 windows 下的编码问题,可以把脚本全部拷贝到剪切板,然后windows下新建文件,保存成 utf-8 编码方式。


沪ICP备19023445号-2号
友情链接