web-dev-qa-db-ja.com

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)のアクセス許可を持っていることを示しています。

なぜ失敗するのですか?

2
Pip

次のコマンドラインで試してみてください。

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

sshを使用すると機能します。単純なコマンドがローカル(ノード上)で機能する場合は、この行でも機能するはずです。

引用符なしで試す場合'、ローカルのシェル(エントリコンピューターの現在のシェル上)は、次の行のノードに対して展開および変換されます。

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

そして、あなたはそのエラーを読むでしょう。

たぶんあなたは面白いものを見つけることができます。 この章 または この他の

5
Hastur