2009年01月22日(木) [長年日記]
■ [howto][unix] sedで特定行の文字列を置換
sedもすぐに忘れるのでメモ。
「name=」で始まる行の後半部分を「oreore」に置換したい場合、次のようなsedスクリプトで実現できた。
/^name=/s/=.*$/=oreore/
sedのsコマンドはその前に「アドレス」を指定することで置換の対象行を絞り込めるので、それを正規表現で指定している。 実行例は次の通り。
$ echo "address=nippon\nname=tanaka\nnumber=12345" | sed '/^name=/s/=.*$/=oreore/' address=nippon name=oreore number=12345
■ [howto][shell][net] ポートが開いているかをチェックするスクリプト
特定のポートが開いているかを調べる方法を考えたのでメモ。対象はLinux。
netstatが使えるかと思ったが、ポート番号を指定して調べるようなオプションは見当たらない。fuserコマンドが使えそうだったので、
if [ -n "`/sbin/fuser -n tcp 10000 2>&1`" ] ; then echo port is opened. else echo port is closed. fi
としてみた。これはTCPポート10000が開いているかを調べる例。
ただし、root以外のユーザで実行した場合は、自分以外のユーザが開いているポートは調べられないので注意。rootで実行すれば調べられる。
参考
- Manpage of FUSER (JM)