首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从shell脚本运行ssh命令

从shell脚本运行ssh命令
EN

Stack Overflow用户
提问于 2015-02-11 20:41:02
回答 2查看 125关注 0票数 1

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

代码语言:javascript
复制
 diff <(ssh user@remote_host 'cat remote_file.txt') <(ssh user2@remote_host2 'cat remote_file2.txt')

但是得到了一个错误:

代码语言:javascript
复制
./a.sh: syntax error at line 1: `(' unexpected

我尝试了一些例子谷谷说使用$()在代码周围,但它不工作,任何人可以帮助我这一点。

EN

回答 2

Stack Overflow用户

发布于 2015-02-11 21:01:28

我知道你想在“diff”中使用两个远程文件的输出。您的解决方案中存在许多错误:

  • 您不能将两个输出流重定向到一个输入流
  • diff仅适用于文件,而不适用于使用一个命令的输出的标准输入
  • ,因为另一个命令的输入是使用管道完成的。重定向要么从文件重定向到命令,要么从命令重定向到file.
  • parenthesis用于捆绑命令,例如"( echo a;echo b)| cat“将导致'echo a‘和'echo 'b’的输出在一个流中传递到'cat‘的输入,后者将简单地打印它。

我要做的(完成我认为你想要做的事情)是把它变成三个独立的命令:

代码语言:javascript
复制
ssh user@remote_host 'cat remote_file.txt' > file1
ssh user2@remote_host2 'cat remote_file.txt' > file2
diff file1 file2
票数 2
EN

Stack Overflow用户

发布于 2015-02-13 21:32:05

我只是做了这个bash脚本,没有问题

代码语言:javascript
复制
#!/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,那么它一定可以很好地工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28454628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档