| #!/bin/sh | |
| # check_forensic <forensic log file> | |
| # check the forensic log for requests that did not complete | |
| # output the request log for each one | |
| F=$1 | |
| temp_create_method=file | |
| if test -f `which mktemp`; then | |
| temp_create_method=mktemp | |
| elif test -f `which tempfile`; then | |
| temp_create_method=tempfile | |
| fi | |
| create_temp() | |
| { | |
| prefix=$1 | |
| case "$temp_create_method" in | |
| file) | |
| name="/tmp/$1.$$" | |
| ;; | |
| mktemp) | |
| name=`mktemp -t $1.XXXXXX` | |
| ;; | |
| tempfile) | |
| name=`tempfile --prefix=$1` | |
| ;; | |
| *) | |
| echo "$0: Cannot create temporary file" | |
| exit 1 | |
| ;; | |
| esac | |
| } | |
| create_temp fcall | |
| all=$name | |
| create_temp fcin | |
| in=$name | |
| create_temp fcout | |
| out=$name | |
| trap "rm -f -- \"$all\" \"$in\" \"$out\";" 0 1 2 3 13 15 | |
| cut -f 1 -d '|' $F > $all | |
| grep ^+ < $all | cut -c2- | sort > $in | |
| grep -- ^- < $all | cut -c2- | sort > $out | |
| # use -i instead of -I for GNU xargs | |
| join -v 1 $in $out | xargs -I xx egrep "^\\+xx" $F | |
| exit 0 |