JMeter にコンフィグファイルがあり、これをプロビジョニング時に書き換える必要が発生した。以前Go言語でやったことはあるが、シェルスクリプトでは、やったことがないので、方法を調べてみる。
設定変更の方式
property ファイルはよく Java で使われるが、例えば GO 言語だと、読むライブラリはあっても書くほうはなかった。プロビジョニング時で固定の変更をしたい場合きっとシェルファイルの中で実施するのが楽だろう。
ブログがあったので、自分でサンプル書いて理解してみる。jmeter.property ファイルをとってきて書き換えてみる。自分が変えたい行は
# Set this if you don't want to use SSL for RMI
# server.rmi.ssl.disable=false
このオプションを有効化したい。ブログを見てコマンドを書く。#
とかはなんかエスケープが必要かなと思いつつまずそのままやると、普通に動く。
$ sed -i -e "s/#server.rmi.ssl.disable=false/server.rmi.ssl.disable=false/" jmeter.properties
これで無事ファイルが変更されたので、今回の fix としてはこれでよいが、意味を使わずに知るのは気持ちわるので、もう少し調べてみる。
ここにいいブログがあった
オリジナルの保存
-i
は --in-place
オプションでこのオプションによって、ファイルの特定の場所の上書き更新ができる。ちなみに、オリジナルのファイルを保存したい場合は、-i
に対してsuffix を指定できる。
$ sed -i.bak -e "s/#server.rmi.ssl.disable=false/server.rmi.ssl.disable=false/" jmeter.properties
$ diff ./jmeter.properties ./jmeter.properties.bak
334c334
< server.rmi.ssl.disable=false
---
> #server.rmi.ssl.disable=false
大変良い感じだ。では、-e
は何だろう?これは、script だ。sed は、Manによると、ストリームエディタで、基本的なテキストのトランスフォーメーションをするとあります。
-e script, --expression=script
add the script to the commands to be executed
スクリプトというとわかりずらいですが、このトランスフォーメーションをするスクリプトです。つまり、sedのコマンドになります。コマンドの詳細はここで見れます。
今回はs/before/after/
の置換コマンドです。ちなみに最後の/
を忘れたらおこられました。
今回はこれでいけそうです。