我需要创建一个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”将会改变。任何想法如何去做?
答案 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