#!/bin/bash#***********************************************************************************************************# Encoder binary comparison test model# -- Compared with benchmark version using SHA-1 string# -- Test bit stream under folder openh264/res# -- SHA-1 string of benchmark version for all cases of all bit streams# under folder openh264/test/encoder_binary_comparion/SHA1Table# -- For more detail,please refer to file AboutTest.##brief:# -- Usage: ./run_SafeDelete.sh $DeleteItermPath# eg: 1 ./run_SafeDelete.sh tempdata.info --->delete only one file# eg: 2 ./run_SafeDelete.sh ../TempDataFolder --->delete entire folder# ./run_SafeDelete.sh /opt/TempData/ABC --->delete entire folder ABC## date: 10/06/2014 Created#***********************************************************************************************************#usage: runGetFileName $FilePathrunGetFileName(){ #parameter check! if [ ! $# -eq 1 ] then echo "usage: runGetFileName \$FilePath" return 1 fi local PathInfo=$1 local FileName="" if [[ $PathInfo =~ ^"/" ]] then FileName=` echo ${PathInfo} | awk 'BEGIN {FS="/"}; {print $NF}'` echo "${FileName}" return 0 elif [[ $PathInfo =~ ^".." ]] then FileName=` echo ${PathInfo} | awk 'BEGIN {FS="/"}; {print $NF}'` echo "${FileName}" return 0 else FileName=${PathInfo} echo "${FileName}" return 0 fi }#******************************************************************************************************#usage: runGetFileFullPath $FilePathInfo#eg: current path is /opt/VideoTest/openh264/ABC# runGetFileFullPath abc.txt --->/opt/VideoTest/openh264/ABC# runGetFileFullPath ../123.txt --->/opt/VideoTest/openh264# runGetFileFullPath /opt/VieoTest/456.txt --->/opt/VieoTestrunGetFileFullPath(){ #parameter check! if [ ! $# -eq 1 ] then echo "usage: runGetFileFullPath \$FilePathInfo " return 1 fi local PathInfo=$1 local FullPath="" local CurrentDir=`pwd` if [[ $PathInfo =~ ^"/" ]] then FullPath=`echo ${PathInfo} |awk 'BEGIN {FS="/"} {for (i=1;i<NF;i++) printf("%s/",$i)}'` cd ${FullPath} FullPath=`pwd` cd ${CurrentDir} echo "${FullPath}" return 0 elif [[ $PathInfo =~ ^".." ]] then FullPath=`echo ${PathInfo} |awk 'BEGIN {FS="/"} {for (i=1;i<NF;i++) printf("%s/",$i)}'` cd ${FullPath} FullPath=`pwd` cd ${CurrentDir} echo "${FullPath}" return 0 else FullPath=${CurrentDir} echo "${FullPath}" return 0 fi}#******************************************************************************************************#usage: runGetFolderFullPath $FolderPathInfo#eg: current path is /opt/VideoTest/openh264/ABC# runGetFolderFullPat SubFolder --->/opt/VideoTest/openh264/ABC/ SubFolder# runGetFolderFullPat ../EFG --->/opt/VideoTest/openh264/EFG# runGetFolderFullPat /opt/VieoTest/MyFolder --->/opt/VieoTest/MyFolderrunGetFolderFullPath(){ #parameter check! if [ ! $# -eq 1 ] then echo "usage: runGetFolderFullPath \$FolderPathInfo " return 1 fi local PathInfo=$1 local FullPath="" local CurrentDir=`pwd` if [[ $PathInfo =~ ^"/" ]] then FullPath=${PathInfo} cd ${FullPath} FullPath=`pwd` cd ${CurrentDir} echo "${FullPath}" return 0 elif [[ $PathInfo =~ ^".." ]] then cd ${PathInfo} FullPath=`pwd` cd ${CurrentDir} echo "${FullPath}" return 0 else FullPath="${CurrentDir}/${PathInfo}" cd ${FullPath} FullPath=`pwd` cd ${CurrentDir} echo "${FullPath}" return 0 fi }#******************************************************************************************************#usage: runUserNameCheck $whoamirunUserNameCheck(){ #parameter check! if [ ! $# -eq 1 ] then echo "usage: runUserNameCheck \$whoami" return 1 fi local UserName=$1 if [ ${UserName} = "root" ] then echo "" echo "*********************************************" echo "delete files under root is not allowed" echo "detected by run_SafeDelete.sh" return 1 else echo "" return 0 fi}#******************************************************************************************************#usage: runFolderLocationCheck $FullPathrunFolderLocationCheck(){ #parameter check! if [ ! $# -eq 1 ] then echo "usage: runFolderLocationCheck \$FullPath" return 1 fi local Location=$1 local FileDirDepth=`echo ${Location} | awk 'BEGIN {FS="/"} {print NF}'` #for other non-project folder data protection #eg /opt/VideoTest/DeletedItem depth=4 if [ $FileDirDepth -lt 5 ] then echo "" echo "*********************************************" echo "FileDepth is $FileDirDepth, and it is less thab the minimum depth(5)" echo "unsafe delete! try to delete non-project related files: $FileDir" echo "detected by run_SafeDelete.sh" return 1 fi return 0}#******************************************************************************************************#usage runSafeDelete $PathinforunSafeDelete(){ #parameter check! if [ ! $# -eq 1 ] then echo "usage runSafeDelete \$FileFullPath" return 1 fi local PathInfo=$1 local UserName=`whoami` local FullPath="" local DeleteIterm="" local FileName="" #user validity check runUserNameCheck ${UserName} if [ ! $? -eq 0 ] then return 1 fi #get full path if [ -d $PathInfo ] then FullPath=`runGetFolderFullPath ${PathInfo} ` elif [ -f $PathInfo ] then FullPath=`runGetFileFullPath ${PathInfo} ` else echo "delete item does not exist" echo "detected by run_SafeDelete.sh" return 1 fi #location validity check runFolderLocationCheck ${FullPath} if [ ! $? -eq 0 ] then return 1 fi #delete file/folder if [ -d $PathInfo ] then DeleteIterm=${FullPath} echo "deleted folder is: $DeleteIterm" rm -rf ${DeleteIterm} elif [ -f $PathInfo ] then FileName=`runGetFileName ${PathInfo}` DeleteIterm="${FullPath}/${FileName}" echo "deleted file is: $DeleteIterm" rm ${DeleteIterm} fi echo "" }PathInfo=$1runSafeDelete $PathInfo
#!/bin/bash
#***********************************************************************************************************
# Encoder binary comparison test model
# -- Compared with benchmark version using SHA-1 string
# -- Test bit stream under folder openh264/res
# -- SHA-1 string of benchmark version for all cases of all bit streams
# under folder openh264/test/encoder_binary_comparion/SHA1Table
# -- For more detail,please refer to file AboutTest.
#
#brief:
# -- Usage: ./run_SafeDelete.sh $DeleteItermPath
# eg: 1 ./run_SafeDelete.sh tempdata.info --->delete only one file
# eg: 2 ./run_SafeDelete.sh ../TempDataFolder --->delete entire folder
# ./run_SafeDelete.sh /opt/TempData/ABC --->delete entire folder ABC
#
# date: 10/06/2014 Created
#***********************************************************************************************************
#usage: runGetFileName $FilePath
runGetFileName()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage: runGetFileName \$FilePath"
return 1
fi
local PathInfo=$1
local FileName=""
if [[ $PathInfo =~ ^"/" ]]
then
FileName=` echo ${PathInfo} | awk 'BEGIN {FS="/"}; {print $NF}'`
echo "${FileName}"
return 0
elif [[ $PathInfo =~ ^".." ]]
then
FileName=` echo ${PathInfo} | awk 'BEGIN {FS="/"}; {print $NF}'`
echo "${FileName}"
return 0
else
FileName=${PathInfo}
echo "${FileName}"
return 0
fi
}
#******************************************************************************************************
#usage: runGetFileFullPath $FilePathInfo
#eg: current path is /opt/VideoTest/openh264/ABC
# runGetFileFullPath abc.txt --->/opt/VideoTest/openh264/ABC
# runGetFileFullPath ../123.txt --->/opt/VideoTest/openh264
# runGetFileFullPath /opt/VieoTest/456.txt --->/opt/VieoTest
runGetFileFullPath()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage: runGetFileFullPath \$FilePathInfo "
return 1
fi
local PathInfo=$1
local FullPath=""
local CurrentDir=`pwd`
if [[ $PathInfo =~ ^"/" ]]
then
FullPath=`echo ${PathInfo} |awk 'BEGIN {FS="/"} {for (i=1;i<NF;i++) printf("%s/",$i)}'`
cd ${FullPath}
FullPath=`pwd`
cd ${CurrentDir}
echo "${FullPath}"
return 0
elif [[ $PathInfo =~ ^".." ]]
then
FullPath=`echo ${PathInfo} |awk 'BEGIN {FS="/"} {for (i=1;i<NF;i++) printf("%s/",$i)}'`
cd ${FullPath}
FullPath=`pwd`
cd ${CurrentDir}
echo "${FullPath}"
return 0
else
FullPath=${CurrentDir}
echo "${FullPath}"
return 0
fi
}
#******************************************************************************************************
#usage: runGetFolderFullPath $FolderPathInfo
#eg: current path is /opt/VideoTest/openh264/ABC
# runGetFolderFullPat SubFolder --->/opt/VideoTest/openh264/ABC/ SubFolder
# runGetFolderFullPat ../EFG --->/opt/VideoTest/openh264/EFG
# runGetFolderFullPat /opt/VieoTest/MyFolder --->/opt/VieoTest/MyFolder
runGetFolderFullPath()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage: runGetFolderFullPath \$FolderPathInfo "
return 1
fi
local PathInfo=$1
local FullPath=""
local CurrentDir=`pwd`
if [[ $PathInfo =~ ^"/" ]]
then
FullPath=${PathInfo}
cd ${FullPath}
FullPath=`pwd`
cd ${CurrentDir}
echo "${FullPath}"
return 0
elif [[ $PathInfo =~ ^".." ]]
then
cd ${PathInfo}
FullPath=`pwd`
cd ${CurrentDir}
echo "${FullPath}"
return 0
else
FullPath="${CurrentDir}/${PathInfo}"
cd ${FullPath}
FullPath=`pwd`
cd ${CurrentDir}
echo "${FullPath}"
return 0
fi
}
#******************************************************************************************************
#usage: runUserNameCheck $whoami
runUserNameCheck()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage: runUserNameCheck \$whoami"
return 1
fi
local UserName=$1
if [ ${UserName} = "root" ]
then
echo ""
echo "*********************************************"
echo "delete files under root is not allowed"
echo "detected by run_SafeDelete.sh"
return 1
else
echo ""
return 0
fi
}
#******************************************************************************************************
#usage: runFolderLocationCheck $FullPath
runFolderLocationCheck()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage: runFolderLocationCheck \$FullPath"
return 1
fi
local Location=$1
local FileDirDepth=`echo ${Location} | awk 'BEGIN {FS="/"} {print NF}'`
#for other non-project folder data protection
#eg /opt/VideoTest/DeletedItem depth=4
if [ $FileDirDepth -lt 5 ]
then
echo ""
echo "*********************************************"
echo "FileDepth is $FileDirDepth, and it is less thab the minimum depth(5)"
echo "unsafe delete! try to delete non-project related files: $FileDir"
echo "detected by run_SafeDelete.sh"
return 1
fi
return 0
}
#******************************************************************************************************
#usage runSafeDelete $Pathinfo
runSafeDelete()
{
#parameter check!
if [ ! $# -eq 1 ]
then
echo "usage runSafeDelete \$FileFullPath"
return 1
fi
local PathInfo=$1
local UserName=`whoami`
local FullPath=""
local DeleteIterm=""
local FileName=""
#user validity check
runUserNameCheck ${UserName}
if [ ! $? -eq 0 ]
then
return 1
fi
#get full path
if [ -d $PathInfo ]
then
FullPath=`runGetFolderFullPath ${PathInfo} `
elif [ -f $PathInfo ]
then
FullPath=`runGetFileFullPath ${PathInfo} `
else
echo "delete item does not exist"
echo "detected by run_SafeDelete.sh"
return 1
fi
#location validity check
runFolderLocationCheck ${FullPath}
if [ ! $? -eq 0 ]
then
return 1
fi
#delete file/folder
if [ -d $PathInfo ]
then
DeleteIterm=${FullPath}
echo "deleted folder is: $DeleteIterm"
rm -rf ${DeleteIterm}
elif [ -f $PathInfo ]
then
FileName=`runGetFileName ${PathInfo}`
DeleteIterm="${FullPath}/${FileName}"
echo "deleted file is: $DeleteIterm"
rm ${DeleteIterm}
fi
echo ""
}
PathInfo=$1
runSafeDelete $PathInfo