Bash脚本:如何远程到计算机运行命令并将输出管道输出到另一台计算机?

时间:2014-08-17 21:13:32

标签: macos bash

我需要创建一个Bash脚本,它能够ssh到计算机或机器B,运行命令并将输出管道传送回机器A上的.txt文件,我该怎么做呢?最终它将是我将要运行并运行命令的计算机列表,但所有输出将附加到机器A上的相同.txt文件。

更新:好的,所以我去了那个其他家伙建议的东西,这似乎有效:

File=/library/logs/file.txt
ssh -n username@<ip> "$(< testscript.sh)" > $File 

我现在需要做的是不是手动输入IP地址,我需要从一个来自.txt文件的主机名列表中读取它并将其放在一个替代ip地址的变量中。一个例子是:ssh username @ Variable,每次从包含主机名的文件中读取一个单词时,“Variable”将会改变。任何想法如何去做?

1 个答案:

答案 0 :(得分:1)

这应该这样做

ssh userB@machineB "some command" | ssh userA@machineA "cat - >> file.txt"

使用您的命令:

ssh userB@machineB <<'END' | ssh userA@machineA "cat - >> file.txt"
echo Hostname=$(hostname) LastChecked=$(date)
ls -l /applications/utilities/Disk\ Utility.app/contents/Plugins/*Partition.dumodule* | awk '{printf "Username=%s DateModified=%s %s %s\n", $3, $6, $7, $8}'
END

您可以使用单个ls -l | awk调用替换stat管道,但似乎OSX stat无法返回用户名,只有用户ID