繁体   English   中英

从shell脚本运行ssh命令

[英]running ssh command from a shell script

我是shell脚本的新手,我试图从shell脚本运行以下命令。

 diff <(ssh user@remote_host 'cat remote_file.txt') <(ssh user2@remote_host2 'cat remote_file2.txt')

但出现错误:

./a.sh: syntax error at line 1: `(' unexpected

我尝试了一些谷歌搜索示例,其中说在代码周围使用$(),但是没有用,请任何人帮助我。

我了解您要在'diff'中使用两个远程文件的输出。 解决方案中有很多错误:

  • 您不能将两个输出流重定向到一个输入流
  • diff仅适用于文件,不适用于stdin
  • 使用一个管道将一个命令的输出用作另一命令的输入。 重定向从文件到命令或从命令到文件。
  • 括号用于捆绑命令,例如“((echo a; echo b)| cat”)将导致'echo a'和'echo'b'的输出在一个流中传递给'cat'的输入。只会打印它。

我要做的(要完成我认为您想做的事情)是将其变成三个单独的命令:

ssh user@remote_host 'cat remote_file.txt' > file1
ssh user2@remote_host2 'cat remote_file.txt' > file2
diff file1 file2

我只是使这个bash脚本没有问题

#!/bin/bash
diff <(ssh user@remote_host cat remote_file.txt) <(ssh user2@remote_host2 cat remote_file2.txt)
exit 0

在以下条件下工作:
-remote_host和remote_host2保留在~/.ssh/known_hosts列表中
-user和user2存在并且具有权限
-remote_host和remote_host2可操作并在ssh服务器上
-user @ remote_host和user2 @ remote_host2已将ssh配置为无需密码即可工作
如果您不知道该怎么做,请参见http://www.linuxproblem.org/art_9.html

也许您的错误停留在'但如果您不使用'remote_file.txt'而仅使用remote_file.txt则它必须能够正常工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM