View Single Post
Old 09-26-2011, 02:35 PM   #143
z0mtec
Member
z0mtec began at the beginning.
 
z0mtec's Avatar
 
Posts: 16
Karma: 20
Join Date: Jun 2011
Device: Kindle PW 2
Hi,

how it work on v3.2.1?

What must i change?

PHP Code:
#!/bin/sh

CONF=/etc/tinyrot.conf
NEXTFILETOSEND
=/var/local/log/nexttosendfile
LASTFILESENT
=/tmp/lastsentfile

_DEVTYPE
=/etc/sysconfig/devtypes
[ -f $_DEVTYPE ] && . $_DEVTYPE

_FEATURE
=/etc/rc.d/features
[ -f $_FEATURE ] && . $_FEATURE
# -----------------------------------------------------------------------------
# functions
# -----------------------------------------------------------------------------

print_usage () {
    echo 
"showlog will print all available logs, including old rotated logs"
    
echo "Usage:"
    
echo "showlog [-f [logfile] | -o <outfile> [logfile] | -s ] "
    
echo "    -f              follow log (tail -f)"
    
echo "    -o <outfile>    cat all available logfile(s) to outfile (default: outfile=/dev/stdout)"
    
echo "    -s              cat the zipped log files with special headers to pipe to the server"
    
echo "      --full           sending all available logs"
    
echo "      --fsn            sending logs for Customer Service (non anonymously)"
    
echo "      --nohead <logfile> sends all logfile logs with no headers to stdout"
    
echo "                         and writes log file listing to /tmp"
    
echo "    logfile         logfile to show (default: logfile=messages)"
    
echo ""
    
echo "NOTE: Don't use the full path. Just mention the file name"
    
echo "Example: showlog messages"
    
exit 1
}

print_stream_header () {
    
NUMFILES=$1
    
echo "MFBS/1.0 $NUMFILES"
    
echo ""
}

print_gzip_header () {
    if [ -
"$1" --"$2" ]; then
        
echo "showlog: print_gzip_header: incorrect arguments"
        
exit
    
fi
    CONTENTLENGTH
="$1"
    
CONTENTNAME="$2"
    
echo "Content-Length: $CONTENTLENGTH"
    
echo "Content-Name: $CONTENTNAME"
    
echo "Content-Type: GZIP"
    
echo "Content-Encoding: GZIP"
    
name=$(productid)
    echo 
"X-DeviceType: $(eval echo \\\${DEVTYPE_$name})"

    
# Convert 046-shasta-049566 to 495660046
    # Convert eng-shasta-049566 to 495660000
    #
    # first s/// converts eng- to 0-
    # second s/// extracts first and last segment, ignoring leading 0s
    # printf puts them back together with correct number of 0s
    
echo "X-DeviceFirmwareVersion:$(printf "%u%04u" $(cat /etc/version.txt | grep Version | awk '{ print $4 }' | sed 's/^[^\-]*[^0-9\-][^\-]*-/0-/; s/0*\([0-9]\+\)-.*-0*\(.\+\)/\2 \1/'))"
}

print_gzip_header_dsn () {
    
print_gzip_header "$1" "$2"
    
echo "X-DSN: $(cat /proc/usid)"
    
echo ""
}

print_gzip_header_anon () {
    
print_gzip_header "$1" "$2"
    
echo "X-Anonymous-Tag: $(cat /etc/guid)"
    
echo ""
}

print_gzip_files_anon () {
    
ALLFILES=$*
    for 
FILE in $ALLFILES
    
do
        
CONTENTNAME=$FILE
        CONTENTLENGTH
=$(ls -l $FILE awk '{print $5}')
        
print_gzip_header_anon $CONTENTLENGTH $CONTENTNAME
        
# NOTE: cat'ing raw gzip file
        
cat $FILE
    done
}

print_gzip_files_dsn () {
    
ALLFILES=$*
    for 
FILE in $ALLFILES
    
do
        
CONTENTNAME=$FILE
        CONTENTLENGTH
=$(ls -l $FILE awk '{print $5}')
        
print_gzip_header_dsn $CONTENTLENGTH $CONTENTNAME
        
# NOTE: cat'ing raw gzip file
        
cat $FILE
    done
}

print_gzip_files_noheaders() {
    
ALLFILES=$*
    for 
FILE in $ALLFILES
    
do
        
cat $FILE
    done
}


get_inode () {
    
FILE=$1
    
return `ls -i $FILE 2>/dev/null | awk '{print $1;}'`
}

wait_for_file() {
    
FILE=$1
    
while [ ! -f $FILE ]; do
        
sleep 1
    done
}

follow_log () {
    
LOG=$1

    
while [ ]; do
        
wait_for_file $LOG
        tail 
-f $LOG &
        
TAILPID=$!
        
get_inode $LOG
        FILEINODE
=$?
        while [ 
]; do
            
get_inode $LOG
            NEWINODE
=$?
            if [ 
$FILEINODE -ne $NEWINODE ]; then
                kill $TAILPID
                
break
            
fi

            sleep 1
        done
    done
}

on_term ()
{
    if [ -
"$TAILPID]; then
        kill $TAILPID 2
>/dev/null >/dev/null
    fi
    
exit 0
}

trap 'on_term' TERM INT EXIT

# -----------------------------------------------------------------------------
# main
# -----------------------------------------------------------------------------

[ -f $CONF ] && . $CONF

if [ x$== "x--help" -o x$== "x-h" ]; then
    print_usage
    
exit 1
fi

# -----------------------------------------------------------------------------
# parse args
# -----------------------------------------------------------------------------

OUTFILE=/dev/stdout
GZIP_HEADER_TYPE
=print_gzip_files_anon
SENDING_GZIP
=
SENDING_FULL=0
NO_HEADERS
=0
LOG
="messages"

while [ -"$1" ]; do
    
__ARG=
    case $
1 in
        
-)
            if [ -
"$2" ]; then
                LOG
="messages"
            
else
                
LOG="$2"
            
fi
            follow_log 
/var/log/$LOG
            
# we dont come back here..
            
exit
            ;;
        -
)
            
shift
            
if [ -"$1" ]; then
                OUTFILE
="$1"
            
fi
            
echo "" "$OUTFILE2>/dev/null
            loginfo kitchensink
            shift
            
;;
        -
)
            
SENDING_GZIP=1
            shift
            
;;
        --
full )
            
SENDING_FULL=1
            shift
            
;;
        --
fsn )
            
GZIP_HEADER_TYPE=print_gzip_files_dsn
            shift
            
;;
        --
nohead )
            
GZIP_HEADER_TYPE=print_gzip_files_noheaders
            SENDING_FULL
=1
            NO_HEADERS
=
            shift 
            
if [ -"$1" ]; then
                LOG
="$1"
            
fi
            shift    
            
;;
        -
| --help )
            
print_usage
            
exit
            ;;
        * )
            
LOG="$1"
            
;;
    
esac
    SHOWLOG_ARGS
=$__ARGS
done


# -----------------------------------------------------------------------------
# calculate the number of files to send/show (NUMFILES) and their names
# (ALLFILES)
# -----------------------------------------------------------------------------
NUMFILES=0
ALLFILES
=
TRANSFERFILE=/tmp/last${LOG}sentfile
# prevent tinyrot from running, and do not run while tinyrot is running
(
uflock 9

# Not sending log to server (not coming from pipelog)
if [ x$SENDING_GZIP == "x" ] ; then
    ALLFILES
=`ls -1  $ARCHIVE_DIR/${LOG}_*.gz | xargs`
    if [ -
"$ALLFILES]; then
        zcat $ALLFILES 
>> "$OUTFILE"
    
fi
    cat 
/var/log/$LOG >> "$OUTFILE"
else # coming from pipelog
    # Sending partial logs
    
if [ x$SENDING_FULL == "x0" ] && [ -e $ARCHIVE_DIR/${LOG}_${OLDEST_FILE} ] ; then
        OLDEST_LZ
=`cat $ARCHIVE_DIR/${LOG}_${OLDEST_FILE}`

        if [ -
e $NEXTFILETOSEND ]; then
            OLDEST_LZ
=`cat $NEXTFILETOSEND`
        
fi


        YOUNGEST_LZ
=`cat $ARCHIVE_DIR/${LOG}_${YOUNGEST_FILE}`
        
COUNTER_LZ=$OLDEST_LZ

        OLDEST
=`echo $OLDEST_LZ|sed 's/[0]*\(.*\)/\1/g'`
        
YOUNGEST=`echo $YOUNGEST_LZ|sed 's/[0]*\(.*\)/\1/g'`
        
COUNTER=`echo $COUNTER_LZ|sed 's/[0]*\(.*\)/\1/g'`

        while [ ${
COUNTER} -lt ${YOUNGEST} ]; do
            
FILE=$ARCHIVE_DIR/${LOG}_${COUNTER_LZ}_*.gz
            
if [ -e $FILE ]; then
                ALLFILES
="$ALLFILES $FILE"
                
NUMFILES=$(($NUMFILES+1))
            
fi
            COUNTER
=$(($COUNTER+1))
            
COUNTER_LZ=`echo $COUNTER | awk '{ printf "%08d", $1 }'`
        
done
        
# update LASTFILESENT
        
if [ ${NUMFILES} -gt 0 ]; then
            
echo $COUNTER awk '{ printf "%08d", $1 }' $LASTFILESENT
        
else
            
cat $NEXTFILETOSEND awk '{ printf "%08d", $1 }' $LASTFILESENT
        fi
        print_stream_header $NUMFILES  
>> "$OUTFILE"
        
$GZIP_HEADER_TYPE $ALLFILES  >> "$OUTFILE"
    
else # Sending full logs
    
if [ "x$NO_HEADERS== "x0" ]; then   
               print_stream_header  
`ls $ARCHIVE_DIR/${LOG}_*.gz | wc -l ` >> "$OUTFILE"
        
else
            
TFILES=`ls $ARCHIVE_DIR/${LOG}_*.gz`
            echo 
$TFILES $TRANSFERFILE        
        fi
        $GZIP_HEADER_TYPE 
`ls $ARCHIVE_DIR/${LOG}_*.gz | xargs ` >> "$OUTFILE"
    
fi
fi
9$FLAG_TINYROT_LOCK 
I canīt find

PHP Code:
print_stream_header $NUMFILES
print_gzip_files $ALLFILES 
z0mtec is offline