このsedを実行したいと思います。
sed "s?\(Defaults.*\)?\1:/etc/bla/foo/?" filename
しかし、psshで実行すると失敗し、エラーコード1で終了します。
pssh -h /root/listofservers -l root -A "sed "s?\(Defaults.*\)?\1:/etc/bla/foo/?" filename"
答え1
pssh
次の使用量の要約があります。
pssh [options] command ...
つまり、リモートホストで実行したいコマンドを引用しないでください。それ以外の場合は、引用されたコマンド全体をコマンドの名前として扱います。また、一重引用符で囲まれた文字列はsed
式のように静的です。
提案:
pssh -h /root/listofservers -l root -A sed 's#\(Defaults.*\)#\1:/etc/bla/foo/#' filename
私も正規表現の文字な?
ので変更しました。ここでは何の違いもありませんが、式を解析しようとしたときにしばらく混乱しました。#
?