簡體   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