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

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

我正在尝试添加一个新行,其中包含集群中 32 个从属节点上每个文件GATEWAY=10.0.10.1的内容。/etc/sysconfig/network
内容。 我读了这个关于如何使用 sed 插入一行的帖子

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

sed -i.bak -e "\$aGATEWAY=10.0.10.1" test/test1

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

pdsh -w n032 cat test/test1

这失败了对于我来说,尝试向节点 32 上的文件添加一行:

pdsh -w n032 sed -i.bak -e "\$aGATEWAY=10.0.10.1" test/test1

出现此错误:

n032: sed: -e expression #1, char 2: extra characters after command
pdsh@admin: n032: ssh exited with exit code 1

我拥有我试图更改的文件:

pdsh -w n032 ls -al test/test1

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

为什么会失败?

答案1

好的,尝试使用这个命令行:

pdsh -w n032  sed -i.bak -e '"\$aGATEWAY=10.0.10.1"' test/test1;

有了ssh它就可以了。如果它在本地(在节点上)运行简单的命令,它也应该在这条线上运行。

当您尝试不使用 quote 时',本地 shell(在入口计算机上的当前 shell 上)将针对该行中的节点进行扩展和转换:

sed -i.bak -e =10.0.10.1 test/test1

你会读到那个错误。

也许你会发现有趣的,例如本章或者这个其他

相关内容