![尝试使用 SSH 通过远程主机访问的集群上的本地输入文件运行本地脚本时管道损坏](https://linux22.com/image/191753/%E5%B0%9D%E8%AF%95%E4%BD%BF%E7%94%A8%20SSH%20%E9%80%9A%E8%BF%87%E8%BF%9C%E7%A8%8B%E4%B8%BB%E6%9C%BA%E8%AE%BF%E9%97%AE%E7%9A%84%E9%9B%86%E7%BE%A4%E4%B8%8A%E7%9A%84%E6%9C%AC%E5%9C%B0%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%E8%BF%90%E8%A1%8C%E6%9C%AC%E5%9C%B0%E8%84%9A%E6%9C%AC%E6%97%B6%E7%AE%A1%E9%81%93%E6%8D%9F%E5%9D%8F.png)
我正在尝试使用 SSH 在远程计算机上的集群上运行本地脚本(例如 hostname.sh),但出现以下错误:
> ssh -A _remote ssh -A _cluster 'bash' < hostname.sh
stdout: write: Broken pipe
在此示例中,文件 hostname.sh 仅输出主机名,但通常可能更复杂。该错误可能是由于管道使用不正确造成的,因为以下工作原理:
ssh -A _remote ssh -A _cluster hostname
> _cluster_name
我已经尝试了几种解决方案,但都以一种或另一种方式失败,它们归结为 ssh 到 _remote,然后尝试读取 hotsname.sh,在这种情况下不可用。有效的方法是将 hostname.sh 复制到 _remote,通过 SSH 复制到远程,然后运行:
ssh _cluster "bash" < hostname.sh
但这意味着我必须在本地和远程计算机之间不断同步 hostname.sh 。
任何帮助表示赞赏。