You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在Synology NAS本地执行Raspberry Pi上的.sh脚本?

解决方案:在Synology NAS本地执行Raspberry Pi上存储的脚本

我完全理解你的需求——你希望在Synology NAS(MachineA)上本地运行存储在Raspberry Pi(MachineB)里的脚本,而不是通过SSH让脚本在Pi端执行。之前的ssh pi@192.168.1.2 "/usr/local/bin/nas/script1.sh"命令之所以是远程执行,是因为SSH默认会将后续命令发送到远端机器运行。结合你的安全需求(密钥存于Pi的加密文件夹、避免密钥泄露),下面是两个可行的方案:

方案1:通过SSH传输脚本内容并本地执行

这个方法不需要挂载远程目录,直接通过SSH让Pi把脚本内容传输到NAS,由NAS本地的Shell执行。

执行命令如下:

ssh pi@192.168.1.2 'cat /usr/local/bin/nas/script1.sh' | bash

关键说明:

  • 这个命令的逻辑是:让Pi读取脚本内容并通过标准输出传递,NAS端用bash接收内容并本地执行,脚本的所有操作都会在NAS上完成,脚本文件仍存储在Pi中。
  • 为了自动化执行(比如NAS开机时自动运行),需要设置NAS到Pi的免密SSH登录:
    1. 在NAS上生成SSH密钥对:ssh-keygen -t ed25519(一路回车即可,不设密码)
    2. 将NAS的公钥复制到Pi的授权列表:ssh-copy-id pi@192.168.1.2
  • 确保Pi上的用户pi有读取该脚本文件的权限。

方案2:将Pi上的脚本目录挂载到NAS本地

通过NFS或Samba将Pi上存放脚本的目录共享给NAS,NAS挂载后即可像执行本地脚本一样运行目标文件,更符合你“本地运行远程存储脚本”的直观需求。

步骤示例(以NFS为例):

  1. 在Pi上配置NFS共享

    • 安装NFS服务:sudo apt-get install nfs-kernel-server
    • 编辑NFS配置文件:sudo nano /etc/exports,添加一行:
      /usr/local/bin/nas 192.168.1.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)
      
      (将192.168.1.0/24替换为NAS所在的IP段,权限按需调整,确保仅NAS能访问)
    • 重启NFS服务:sudo systemctl restart nfs-kernel-server
  2. 在Synology NAS上挂载NFS共享

    • 打开DSM的「文件服务」,确保NFS服务已启用
    • 进入「控制面板」→「文件共享」→「新增」,选择「远程NFS共享」,按照向导输入Pi的IP和共享路径完成挂载
    • 挂载完成后,即可通过NAS上的挂载路径执行脚本:/volumeX/pi_script_share/script1.shvolumeX为NAS的存储卷)

安全注意事项:

  • 确保Pi上存放脚本的目录位于加密分区,且已配置好被盗时自动卸载的触发机制(比如通过脚本检测异常断电或物理位移信号,自动卸载加密分区)
  • NFS共享仅允许NAS的特定IP访问,避免其他设备连接

额外建议

  • 无论选择哪个方案,都要先手动测试命令/挂载流程,确保能正常执行挂载加密文件夹的操作
  • 将执行脚本的命令添加到Synology DSM的「任务计划」中,设置为开机时自动运行,实现挂载流程的自动化

内容的提问来源于stack exchange,提问作者Se Sei

火山引擎 最新活动