sshコマンドで直接リモート先のマシン上でコマンドを用いたsedを行わせる時
Pocket

多くのサーバを構築、設定修正をする場合、sshコマンドから直接設定を行う方法を採用する事が多いだろう。
そんな時、リモート先で置換後の文字列をコマンドで設定するsedを行う必要が出た場合、どうすればよいのか。

例えば、「aaaaa」という文字列をリモート先のホスト名に変換する場合。
以下のようにコマンドを実行した場合、ローカル側のhostnameが出力されてしまう。

sed ユーザ名@リモートホスト sed s/aaaaa/`hostname`/g 対象ファイル
Sponsored Links

これは、「`hostname`」コマンドがローカル側で一度展開されてしまうからだ。
では、リモート側でコマンドを展開させるにはどうすればいいのだろうか?

以下のように、sedコマンドでの処理自体を「'(シングルクォーテーション)」で囲むと良いだろう。
なお、「”(ダブルクォーテーション)」だとまたローカルで展開されてしまうので注意。

sed ユーザ名@リモートホスト 'sed s/aaaaa/`hostname`/g' 対象ファイル
Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。