bash

July 13, 2008

ssh-agent

ssh-agentの起動、パスフレーズ入力の自動化。
vi ~/.bashrc

echo -n "ssh-agent: "
if [ ! -f ~/.ssh-agent-info ]; then
  ssh-agent > ~/.ssh-agent-info
fi

source ~/.ssh-agent-info
ssh-add -l >&/dev/null

if [ $? == 1 ]; then
  ssh-add ~/.ssh/priv_key
fi


July 03, 2008

grep | sed

以下のような実行ログから失敗したid(\[\d+\]の部分)を抽出する。
20080701 15:20:01 SUCCESS: username [10502]
20080701 18:14:41 FAILURE: username [3821]
20080702 08:39:22 SUCCESS: username [9134]
20080702 14:43:52 FAILURE: username [6810]
20080702 21:11:05 SUCCESS: username [8819]
20080703 08:31:34 SUCCESS: username [13266]
...
grepで失敗の行を取り出してsedに渡す。
結果をfailures.phpに出力。
grep FAILURE some.log | sed -e 's/^.*\[\([0-9]*\)\]/\1 => 1,/' > failures.php
こんな感じになる。
3821 => 1,
6810 => 1,
...
ちょっと付け足してphpの配列にする。
使用する側のプログラムではissetでチェックしたいのでこの形式に。
in_array()だと遅い。
<?php

$failures = array(
3821 => 1,
6810 => 1,
...
);

...

if (!isset($failures[$targetId])) {
  // process
}
キャプチャに使う括弧をバックスラッシュでエスケープする必要がある。
これに少しはまった。

April 10, 2008

bash convext function

指定したディレクトリ以下のファイルの拡張子を変更する。
~/.bashrc

...

# ============== CONVEXT FUNC =================

convext () {
  FEXT=$2
  TEXT=$3
  _convext `pwd`/$1
}

_convext () {
  if ls -a $1/*.$FEXT >&/dev/null ; then
    for FILE in `ls $1/*.$FEXT`
    do  
      local TONAME=`echo $FILE | sed -e "s/\.[^.]*$//"`".$TEXT"
      mv $FILE $TONAME
    done
  fi  
  
  for ITEM in `ls -a $1`
  do  
    if [ $ITEM = "." -o $ITEM = ".." ]; then continue
    fi  
    
    local RPATH=$1/$ITEM
    
    if [ -d $RPATH ]; then
      _convext $RPATH $1
    fi  
  done
}

export -f convext
$ convext targetdir from_ext to_ext


April 08, 2008

bash recrmdir function

指定したディレクトリ内の、指定したディレクトリ名のディレクトリを再帰的に削除する関数。ある時に必要になったけど、他で必要あるかどうかはおいといて...
~/.bashrc

...

# ============== RECRMDIR FUNC =================

recrmdir () {
  RMDIR_NAME=$2
  _recrmdir `pwd`/$1
}

_recrmdir () {
  for ITEM in `ls -a $1`
  do  
    if [ $ITEM = "." -o $ITEM = ".." ]; then continue
    fi  
    
    local RPATH=$1/$ITEM
    
    if [ $ITEM = $RMDIR_NAME ]; then
      rm -rf $RPATH
    elif [ -d $RPATH ]; then
      _recrmdir $RPATH $1
    fi  
  done
}

export -f recrmdir
$ recrmdir targetdir dirname


Sabel

Sabel PHP Frameworkを開発しています。
http://www.sabel.jp/

Search
Categories
Tags
Recent Articles
Archives