SED 和 PDSH:向集群中从节点上的文件添加一行

Pip*_*Pip 2 sed cluster pdsh

我试图添加包含一个新行GATEWAY=10.0.10.1/etc/sysconfig/network集群中的每个32个从节点的文件。
我阅读了这篇关于如何使用 sed 插入一行的文章

这适用于我向本地文件添加一行:

sed -i.bak -e "\$aGATEWAY=10.0.10.1" test/test1
Run Code Online (Sandbox Code Playgroud)

这适用于我查看节点 32 上的文件:

pdsh -w n032 cat test/test1
Run Code Online (Sandbox Code Playgroud)

对我尝试在节点 32 上的文件中添加一行失败了:

pdsh -w n032 sed -i.bak -e "\$aGATEWAY=10.0.10.1" test/test1
Run Code Online (Sandbox Code Playgroud)

出现此错误:

n032: sed: -e expression #1, char 2: extra characters after command
pdsh@admin: n032: ssh exited with exit code 1
Run Code Online (Sandbox Code Playgroud)

我拥有要更改的文件:

pdsh -w n032 ls -al test/test1
Run Code Online (Sandbox Code Playgroud)

上面的命令显示我拥有它并且拥有读写 ( rw) 权限。

为什么会失败?

Has*_*tur 5

好的,试试这个命令行:

pdsh -w n032  sed -i.bak -e '"\$aGATEWAY=10.0.10.1"' test/test1;
Run Code Online (Sandbox Code Playgroud)

有了ssh它。如果它在本地(在节点上)运行简单命令,它也应该在这一行运行。

当您尝试不使用 quote 时',本地外壳(在入门计算机上的当前外壳上)将为节点扩展和转换以下行:

sed -i.bak -e =10.0.10.1 test/test1
Run Code Online (Sandbox Code Playgroud)

你会读到那个错误。

也许您会发现有趣的内容,例如本章其他章节