| #!/bin/sh |
| ########################################################################## |
| # If not stated otherwise in this file or this component's Licenses.txt |
| # file the following copyright and licenses apply: |
| # |
| # Copyright 2018 RDK Management |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| ########################################################################## |
| |
| . /etc/include.properties |
| . /etc/device.properties |
| |
| . $RDK_PATH/utils.sh |
| . $RDK_PATH/interfaceCalls.sh |
| . $RDK_PATH/utils.sh |
| . $RDK_PATH/logfiles.sh |
| . $RDK_PATH/commonUtils.sh |
| |
| if [ $# -ne 6 ]; then |
| echo "USAGE: $0 <TFTP Server IP> <Flag (STB delay or not)> <SCP_SERVER> <UploadOnReboot> <UploadProtocol> <UploadHttpLink>" |
| fi |
| |
| # assign the input arguments |
| TFTP_SERVER=$1 |
| FLAG=$2 |
| DCM_FLAG=$3 |
| UploadOnReboot=$4 |
| UploadProtocol=$5 |
| UploadHttpLink=$6 |
| |
| DCM_LOG_PATH=/upload |
| |
| if [ $FLAG -eq 0 ]; then |
| if [ -f $RAMDISK_PATH/.standby ]; then |
| echo "`/bin/timestamp` Exiting since box is in standby..!" |
| exit 0 |
| fi |
| fi |
| |
| # initialize the variables |
| MAC=`getErouterMacAddress` |
| HOST_IP=`getIPAddress` |
| dt=`date "+%m-%d-%y-%I-%M%p"` |
| LOG_FILE="$MAC_Logs_$dt.tgz" |
| |
| #MARKER_FILE=$MAC"_Logs_Marker_$dt.txt" |
| VERSION="version.txt" |
| # working folders |
| PREV_LOG_PATH="$LOG_PATH/PreviousLogs" |
| PREV_LOG_BACKUP_PATH="$LOG_PATH/PreviousLogs_backup/" |
| DCM_UPLOAD_LIST="$LOG_PATH/dcm_upload" |
| |
| echo "Build Type: $BUILD_TYPE Log file: $LOG_FILE TFTP Server: $TFTP_SERVER Protocol: $UploadProtocol UploadHttpLink: $UploadHttpLink" >> $LOG_PATH/dcmscript.log |
| |
| prevUploadFlag=0 |
| |
| if [ ! -d $PREV_LOG_PATH ]; then |
| echo "The Previous Logs folder is missing" >> $LOG_PATH/dcmscript.log |
| #if [ "true" != "$RDK_EMULATOR" ]; then |
| # exit 0 |
| #else |
| |
| if [ ! -d $LOG_PATH ]; then mkdir -p $LOG_PATH; fi |
| if [ ! -d $LOG_PATH/PreviousLogs ]; then mkdir -p $LOG_PATH/PreviousLogs; fi |
| if [ ! -d $LOG_PATH/PreviousLogs_backup ]; then mkdir -p $LOG_PATH/PreviousLogs_backup; fi |
| rm -rf $LOG_PATH/PreviousLogs_backup/* |
| |
| backupSystemLogFiles mv $LOG_PATH $PREV_LOG_PATH |
| backupAppBackupLogFiles mv $LOG_PATH $PREV_LOG_PATH |
| |
| #fi |
| else |
| #if [ "true" != "$RDK_EMULATOR" ]; then |
| #echo "" |
| #else |
| |
| rm -rf $LOG_PATH/PreviousLogs_backup/* |
| backupSystemLogFiles mv $LOG_PATH $PREV_LOG_PATH |
| backupAppBackupLogFiles mv $LOG_PATH $PREV_LOG_PATH |
| #cp $PREV_LOG_BACKUP_PATH/* $PREV_LOG_PATH/ |
| #fi |
| fi |
| |
| backupAppLogs() |
| { |
| source=$1 |
| destn=$2 |
| if [ -f $source$RILog ] ; then cp $source$RILog $destn; fi |
| if [ -f $source$XRELog ] ; then cp $source$XRELog $destn; fi |
| if [ -f $source$WBLog ] ; then cp $source$WBLog $destn; fi |
| if [ -f $source$SysLog ] ; then cp $source$SysLog $destn; fi |
| } |
| renameRotatedLogs() |
| { |
| logPath=$1 |
| if [ -f $RDK_PATH/renameRotatedLogs.sh ]; then |
| if [ -f $logPath/ocapri_log.txt ] ; then sh $RDK_PATH/renameRotatedLogs.sh $logPath/ocapri_log.txt; fi |
| if [ -f $logPath/receiver.log ] ; then sh $RDK_PATH/renameRotatedLogs.sh $logPath/receiver.log; fi |
| if [ -f $logPath/greenpeak.log ] ; then sh $RDK_PATH/renameRotatedLogs.sh $logPath/greenpeak.log; fi |
| if [ -f $logPath/gp_init.log ] ; then sh $RDK_PATH/renameRotatedLogs.sh $logPath/gp_init.log; fi |
| if [ -f $logPath/app_status.log ] ; then sh $RDK_PATH/renameRotatedLogs.sh $logPath/app_status.log; fi |
| fi |
| } |
| processLogsFolder() |
| { |
| srcLogPath=$1 |
| destnLogPath=$2 |
| backupAppLogs "$srcLogPath/" "$destnLogPath/" |
| backupSystemLogFiles "cp" $srcLogPath $destnLogPath |
| backupAppBackupLogFiles "cp" $srcLogPath $destnLogPath |
| |
| if [ -f $RAMDISK_PATH/disk_log.txt ]; then cp $RAMDISK_PATH/disk_log.txt $destnLogPath ; fi |
| |
| backupCount=`ls $srcLogPath/logbackup-* 2>/dev/null | wc -l` |
| if [ $backupCount -gt 0 ]; then |
| cp -r $srcLogPath/logbackup-* $destnLogPath |
| fi |
| |
| if [ -f $srcLogPath/$rebootLog ]; then cp $srcLogPath/$rebootLog $destnLogPath; fi |
| if [ -f $srcLogPath/$ablReasonLog ]; then cp $srcLogPath/$ablReasonLog $destnLogPath; fi |
| if [ -f $srcLogPath/$ueiLog ]; then cp $srcLogPath/$ueiLog $destnLogPath; fi |
| if [ -f $PERSISTENT_PATH/sventest/p3541_all_csven_AV_health_data_trigger.tar.gz ] ; then |
| cp $PERSISTENT_PATH/sventest/p3541_all_csven_AV_health_data_trigger.tar.gz $destnLogPath |
| fi |
| if [ "$DEVICE_TYPE" != "mediaclient" ]; then |
| renameRotatedLogs $srcLogPath |
| fi |
| } |
| modifyFileWithTimestamp() |
| { |
| srcLogPath=$1 |
| ret=`ls $srcLogPath/*.txt | wc -l` |
| if [ ! $ret ]; then |
| ret=`ls $srcLogPath/*.log | wc -l` |
| if [ ! $ret ]; then exit 1; fi |
| fi |
| |
| dt=`date "+%m-%d-%y-%I-%M%p-"` |
| FILES=*.* |
| FILES1=".*-[0-9][0-9]AM-.*" |
| FILES2=".*-[0-9][0-9]PM-.*" |
| |
| for f in $FILES |
| do |
| test1=0 |
| test2=0 |
| test3=0 |
| test4=0 |
| |
| test1=`expr match $f $FILES1` |
| test2=`expr match $f $FILES2` |
| test3=`expr match $f $rebootLog` |
| test4=`expr match $f $ablReasonLog` |
| |
| if [ $test1 -gt 0 -o $test2 -gt 0 -o $test3 -gt 0 -o $test4 -gt 0 ]; then |
| echo "`/bin/timestamp` Processing file...$f" >> $LOG_PATH/dcmscript.log |
| else |
| mv $f $dt$f |
| fi |
| done |
| #cp /version.txt ./$dt$VERSION |
| } |
| |
| copyAllFiles () |
| { |
| |
| EXCLUDE="dcm PreviousLogs_backup PreviousLogs" |
| cd $LOG_PATH |
| |
| for fileName in * |
| do |
| COPY_BOOLEAN=true |
| for excl in $EXCLUDE |
| do |
| if [ $excl == $fileName ]; then |
| COPY_BOOLEAN=false |
| fi |
| done |
| |
| if $COPY_BOOLEAN; then |
| cp -R $fileName $DCM_LOG_PATH |
| fi |
| done |
| } |
| copyOptLogsFiles () |
| { |
| cd $LOG_PATH |
| cp * $DCM_LOG_PATH >> $LOG_PATH/dcmscript.log 2>&1 |
| } |
| |
| HttpLogUpload() |
| { |
| result=1 |
| FILENAME='/tmp/httpresult.txt' |
| HTTP_CODE=/tmp/curl_httpcode |
| |
| CLOUD_URL=$UploadHttpLink |
| #CLOUD_URL="$(UploadHttpLink)filename=$LOG_FILE" |
| |
| CURL_CMD="curl -w '%{http_code}\n' -F \"filename=@$1\" -o \"$FILENAME\" \"$CLOUD_URL\" --connect-timeout 10 -m 10" |
| echo URL_CMD: $CURL_CMD |
| ret= eval $CURL_CMD > $HTTP_CODE |
| http_code=$(awk -F\" '{print $1}' $HTTP_CODE) |
| if [ $http_code -eq 200 ];then |
| echo "`/timestamp` Done Uploading Logs through HTTP" >> $LOG_PATH/dcmscript.log |
| result=0 |
| elif [ $http_code -eq 302 ];then |
| #Get the url from FILENAME |
| NewUrl=$(awk -F\" '{print $1}' $FILENAME) |
| |
| CURL_CMD="curl -w '%{http_code}\n' -o \"$FILENAME\" \"$NewUrl\" --connect-timeout 10 -m 10" |
| echo URL_CMD: $CURL_CMD |
| result= eval $CURL_CMD > $HTTP_CODE |
| http_code=$(awk -F\" '{print $1}' $HTTP_CODE) |
| |
| if [ $http_code -eq 200 ];then |
| echo "`/timestamp` Done Uploading Logs through - HTTP" >> $LOG_PATH/dcmscript.log |
| result=0 |
| else |
| echo "`/timestamp` Failed Uploading Logs through - HTTP" >> $LOG_PATH/dcmscript.log |
| fi |
| fi |
| echo $result |
| } |
| |
| uploadDCMLogs() |
| { |
| |
| cd $DCM_LOG_PATH |
| echo " Uploading Logs through DCM cron job" >> $LOG_PATH/dcmscript.log |
| modifyFileWithTimestamp $DCM_LOG_PATH >> $LOG_PATH/dcmscript.log 2>&1 |
| tar -zcvf $LOG_FILE * >> $LOG_PATH/dcmscript.log 2>&1 |
| sleep 60 |
| echo "Uploading logs $LOG_FILE onto $TFTP_SERVER" >> $LOG_PATH/dcmscript.log |
| |
| retval=1 |
| |
| if [ "$UploadProtocol" == "HTTP" ];then |
| retval=$(HttpLogUpload $LOG_FILE) |
| fi |
| if [ $retval -eq 1 ];then #Http upload failed |
| tftp -p -r $LOG_FILE -l $LOG_FILE $TFTP_SERVER >> $LOG_PATH/dcmscript.log 2>&1 |
| echo "`/bin/timestamp` Done Uploading Logs through TFTP" >> $LOG_PATH/dcmscript.log |
| sleep 1 |
| fi |
| |
| rm -rf $DCM_LOG_PATH/ |
| } |
| uploadLogOnReboot() |
| { |
| uploadLog=$1 |
| echo "Sleeping for seven minutes " |
| if [ "true" != "$RDK_EMULATOR" ]; then |
| sleep 12 |
| fi |
| echo "Done sleeping prev logpath "$PREV_LOG_PATH |
| ret=`ls $PREV_LOG_PATH/*.txt | wc -l` |
| if [ ! $ret ]; then |
| ret=`ls $PREV_LOG_PATH/*.log | wc -l` |
| if [ ! $ret ]; then exit 1; fi |
| fi |
| if [ "$HDD_ENABLED" = "true" ]; then |
| # Special processing - Permanently backup logs on box delete the logs older than |
| # 3 days to take care of old filename |
| sleep 2 |
| stat=`find /opt/logs -name "*-*-*-*-*M-" -mtime +3 -exec rm -rf {} \;` |
| # for the new filenames with suffix logbackup |
| stat=`find /opt/logs -name "*-*-*-*-*M-logbackup" -mtime +3 -exec rm -rf {} \;` |
| |
| TIMESTAMP=`date "+%m-%d-%y-%I-%M%p-logbackup"` |
| PERM_LOG_PATH="$LOG_PATH/$TIMESTAMP" |
| mkdir -p $PERM_LOG_PATH |
| |
| processLogsFolder $PREV_LOG_PATH $PERM_LOG_PATH |
| fi |
| echo "ckp100-------------prev log path-------------"$PREV_LOG_PATH |
| cd $PREV_LOG_PATH |
| rm $LOG_FILE |
| modifyFileWithTimestamp $PREV_LOG_PATH >> $LOG_PATH/dcmscript.log 2>&1 |
| |
| echo "ckp101---------------------upload log-----"$uploadLog |
| ls -al |
| sleep 30 |
| if $uploadLog; then |
| echo "ckp101--------------------------" |
| tar -zcvf $LOG_FILE * >> $LOG_PATH/dcmscript.log 2>&1 |
| echo "Uploading logs $LOG_FILE onto $TFTP_SERVER" >> $LOG_PATH/dcmscript.log |
| sleep 60 |
| #tftp -p -r $LOG_FILE -l $LOG_FILE $TFTP_SERVER >> $LOG_PATH/dcmscript.log 2>&1 |
| #sleep 1 |
| #echo "`/bin/timestamp` Done Uploading Logs" >> $LOG_PATH/dcmscript.log |
| proUpdel=`cat /tmp/DCMSettings.conf | grep -i uploadRepository:uploadProtocol | tr -dc '"' |wc -c` |
| echo "number of proUPdel2:"$proUpdel |
| #proUpdel=$((proUpdel - 1)) |
| uploadProtocolla=`cat /tmp/DCMSettings.conf | grep -i urn:settings:TelemetryProfile | cut -d '"' -f$proUpdel` |
| echo "Upload protocol logupload is:"$uploadProtocolla |
| TurrisMacAddress=`ifconfig erouter0 | grep HWaddr | cut -c39-55` |
| cp $LOG_FILE $TurrisMacAddress-Logs-$LOG_FILE |
| if [ "$uploadProtocolla" != "TFTP" ];then |
| echo "before HTTP log upload" |
| HTTPLOGUPLOADURL=`cat /tmp/DCMSettings.conf | grep -i "urn:settings:LogUploadSettings:RepositoryURL" | cut -d "=" -f2` |
| if [ "$HTTPLOGUPLOADURL" == "" ]; then |
| echo "No HTTP URL configured in xconf,going with internal one !!" |
| HTTPLOGUPLOADURL=$DCM_LA_SERVER_URL |
| fi |
| echo "HTTPLOGUPLOADURL:"$HTTPLOGUPLOADURL |
| echo "upload log file is:"$LOG_FILE |
| CURL_CMD="curl -w '%{http_code}\n' -F filename=@$PREV_LOG_PATH/$TurrisMacAddress-Logs-$LOG_FILE '$HTTPLOGUPLOADURL' --connect-timeout 100 -m 100" |
| #echo_t "CURL_CMD http proto log upload: $CURL_CMD" >> $DCM_LOG_FILE |
| echo "------CURL_CMD2:"$CURL_CMD |
| HTTP_CODE=`result= eval $CURL_CMD` |
| http_code=$(echo $HTTP_CODE | cut -d "." -f 2) |
| echo "http_code is :"$http_code |
| if [ $http_code -eq 200 ] ; then |
| echo "HTTP log upload succeded!!!!!!!!!!!!!!!!!" |
| else |
| loguploadRetryCount=0 |
| while [ $loguploadRetryCount -lt 2 ] |
| do |
| echo "Trying to upload log file..." |
| CURL_CMD="curl -w '%{http_code}\n' -F filename=@$PREV_LOG_PATH/$TurrisMacAddress-Logs-$LOG_FILE '$HTTPLOGUPLOADURL' --connect-timeout 100 -m 100" |
| HTTP_CODE=`result= eval $CURL_CMD` |
| http_code_la=$(echo $HTTP_CODE | cut -d "." -f 2) |
| echo "http_code is :"$http_code_la |
| if [ "$http_code_la" != "200" ]; then |
| echo "Error in uploading log file" |
| else |
| echo "logupload succeded in retry" |
| break |
| fi |
| loguploadRetryCount=`expr $loguploadRetryCount + 1` |
| done |
| if [ $loguploadRetryCount -eq 2]; then |
| echo "HTTP log upload failed!!!!!!!!!!!!!!!!!" |
| fi |
| fi |
| else |
| echo "Uploading logs $LOG_FILE onto $TFTP_SERVER" >> $LOG_PATH/dcmscript.log |
| tftp -p -r $TurrisMacAddress-Logs-$LOG_FILE -l $TurrisMacAddress-Logs-$LOG_FILE $TFTP_SERVER >> $LOG_PATH/dcmscript.log 2>&1 |
| ret=$? |
| echo $ret |
| if [ "$ret" -eq 1 ]; then |
| tftplauploadRetryCount=0 |
| while [ "$tftplauploadRetryCount" -lt 2 ] |
| do |
| echo "Trying to upload logs file using tftp again..." |
| tftp -p -r $TurrisMacAddress-Logs-$LOG_FILE -l $TurrisMacAddress-Logs-$LOG_FILE $TFTP_SERVER >> $LOG_PATH/dcmscript.log 2>&1 |
| ret=$? |
| if [ "$ret" -eq 1 ]; then |
| echo "error in uploading logs using tftp" |
| else |
| echo "tftp upload in retry logs succeded" |
| ret=0 |
| break |
| fi |
| tftplauploadRetryCount=`expr $tftplauploadRetryCount + 1` |
| done |
| if [ "$tftlauploadRetryCount" -eq 2 ]; then |
| ret=1 |
| echo "TFTP log upload failed!!!!!!!!!!!!!!!!!" |
| else |
| echo "TFTP log upload succeded !!!" |
| ret=0 |
| fi |
| fi |
| fi |
| sleep 60 |
| echo "Done Uploading Logs and removing rtl_json.txt file" |
| rm -rf $PREV_LOG_PATH/$TurrisMacAddress-Logs-$LOG_FILE |
| rm -rf $TELEMETRY_JSON_RESPONSE |
| rm -rf $PERSISTENT_PATH/*TELE* |
| fi |
| cd $PREV_LOG_PATH |
| rm -rf $PREV_LOG_PATH/$LOG_FILE |
| rm -rf $PREV_LOG_BACKUP_PATH |
| mkdir -p $PREV_LOG_BACKUP_PATH |
| if [ "$BUILD_TYPE" = "dev" ] || [ "$HDD_ENABLED" = "false" ]; then |
| |
| echo "Moving to Previous Logs Backup Folder " >> $LOG_PATH/dcmscript.log |
| mv * $PREV_LOG_BACKUP_PATH |
| else |
| echo "`/bin/timestamp` Deleting from Previous Logs Folder " >> $LOG_PATH/dcmscript.log |
| rm -rf * |
| fi |
| } |
| #if [ "$true" != "$RDK_EMULATOR" ]; then |
| #if [ -d $DCM_LOG_PATH ]; then |
| # rm -rf $DCM_LOG_PATH/ |
| #fi |
| #Remove *.tgz files from /opt/logs |
| #if [ "true" != "$RDK_EMULATOR" ]; then |
| #stat=`find $LOG_PATH -name "*.tgz" -exec rm -rf {} \;` |
| |
| #Remove files which have timestamp in it filename |
| #for item in `ls $LOG_PATH/*-*-*-*-*M-* | grep "[0-9]*-[0-9]*-[0-9]*-[0-9]*-M*" | grep -v "logbackup"`;do |
| # if [ -f "$item" ];then |
| # echo "`/bin/timestamp` Removing $item" >> $LOG_PATH/dcmscript.log |
| # rm -rf $item |
| #fi |
| #done |
| #fi |
| #fi |
| if [ $DCM_FLAG -eq 0 ] ; then |
| echo "`/bin/timestamp` Uploading Without DCM" >> $LOG_PATH/dcmscript.log |
| uploadLogOnReboot true |
| else |
| if [ $FLAG -eq 1 ] ; then |
| if [ $UploadOnReboot -eq 1 ]; then |
| echo "Uploading Logs with DCM UploadOnReboot set to true" >> $LOG_PATH/dcmscript.log |
| echo "call uploadLogOnReboot" |
| uploadLogOnReboot true |
| |
| else |
| echo "`/bin/timestamp` Not Uploading Logs with DCM UploadOnReboot set to false" >> $LOG_PATH/dcmscript.log |
| uploadLogOnReboot false |
| echo $PERM_LOG_PATH >> $DCM_UPLOAD_LIST |
| fi |
| |
| else |
| if [ $UploadOnReboot -eq 0 ]; then |
| mkdir -p $DCM_LOG_PATH |
| if [ "$HDD_ENABLED" = "true" ]; then |
| fileUploadCount=`cat "$DCM_UPLOAD_LIST" | wc -l` |
| if [ $fileUploadCount -gt 0 ]; then |
| while read line |
| do |
| echo $line |
| cp -R $line $DCM_LOG_PATH |
| done < $DCM_UPLOAD_LIST |
| copyOptLogsFiles |
| cat /dev/null > $DCM_UPLOAD_LIST |
| uploadDCMLogs |
| else |
| copyOptLogsFiles |
| uploadDCMLogs |
| fi |
| else |
| if [ -f $PREV_LOG_BACKUP_PATH/uploaded ]; then |
| copyOptLogsFiles |
| uploadDCMLogs |
| else |
| cd $PREV_LOG_BACKUP_PATH |
| foldertime=`ls *version.txt | cut -c 1-16` |
| if [ -z $foldertime ]; then |
| foldertime=`date +%m-%d-%y-%I-%M%p` |
| fi |
| TIMESTAMP=$foldertime-logbackup |
| PERM_LOG_PATH="/mnt/memory/dcm/$TIMESTAMP" |
| mkdir -p $PERM_LOG_PATH |
| cp * $PERM_LOG_PATH |
| copyOptLogsFiles |
| uploadDCMLogs |
| cd $PREV_LOG_BACKUP_PATH |
| touch uploaded |
| fi |
| fi |
| |
| else |
| if [ "$HDD_ENABLED" = "true" ]; then |
| touch $DCM_INDEX |
| copyAllFiles |
| uploadDCMLogs |
| fi |
| fi |
| fi |
| fi |
| |