catとリダイレクトでファイルを作ろう

FreeBSDの初期設定スクリプトもどきを作ってる時に、たとえばipfilterとかに使ったり、cronとかに使ったりするテキストデータの作り方をどうしようかと悩んでたところ。

おそらく色々な用途があると思うけど、catとリダイレクトを使ってこんな事ができたのかーと良い事を知った。

言葉じゃ上手く説明できないので、コマンドで書いてみる。
このままじゃ使えないのであくまで例として見てね。

ファイル名はなんでもいいけど、とりあえじ

% vi set.sh

 1 #!/bin/sh
  2 
  3 ip=$1
  4 
  5 cat << EOF > ipfilter.txt
  6 block in log quick from any to any with ipopts
  7 block in log quick proto tcp from any to any with short
  8 
  9 pass in on em0 all head 100
 10 block in from 127.0.0.0/8 to any group 100
 11 block in from $ip/32 to any group 100
 12 pass out on em0 all head 150
 13 block out from 127.0.0.0/8 to any group 150
 14 block out from any to 127.0.0.0/8 group 150
 15 block out from any to $ip/32 group 150
 16 
 17 EOF
 18

と、こんな感じにするとすると。

% ./set.sh 192.168.1.100

そして、こんな風に実行するとすると。
中身をみると、ゆで卵じゃなくてファイルができてる。

% cat ipfilter.txt
block in log quick from any to any with ipopts
block in log quick proto tcp from any to any with short

pass in on em0 all head 100
block in from 127.0.0.0/8 to any group 100
block in from 192.168.1.100/32 to any group 100
pass out on em0 all head 150
block out from 127.0.0.0/8 to any group 150
block out from any to 127.0.0.0/8 group 150
block out from any to 192.168.1.100/32 group 150

こうなるのね。
じつに素晴らしい。

たとえば/etc/ipfilterとかにも使えるし、/etc/crontabにもリダイレクトを>の上書きでなくて>>で追記にすればOKだろう。

コマンドじたいは初歩的な事だけど、やはり基本の積み重ねが大事という事を考えるね。

 

こないだWOWOW貴志 祐介特集をやってたので悪の教典という映画を見たのだけど、黒い家と同じく小説の方がおもしろいのだろうか。
後半にかけての展開がエルフの遺作ってゲームを思い出した。

オチと日記の内容が全く関係ないけど、まあいいか。

 

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *