Files
eval_functions/functions.sh
2021-06-14 22:14:16 +02:00

247 lines
5.2 KiB
Bash

#! /bin/bash
function e {
echo -ne "${1};"
}
# file age
# return 0 if given file mtime is older than given age (in day)
# arg1: file
# arg2: age to compare
function _fileOlderThan {
if [ ! -f $1 ] ; then echo -ne "0;" ; return 0 ; fi
test $(find test -mtime +$2)
return $?
}
# file mtime
# arg1: file
function fileMTime {
if [ ! -f $1 ] ; then echo -ne "0;" ; return 0 ; fi
stat --printf "%y;" $1
}
# file numline
# arg1: file
function fileNumLines {
if [ ! -f $1 ] ; then echo -ne "0;" ; return 0 ; fi
n=$(wc -l $1 | awk '{print $1}')
echo -ne $n;
}
#ok if given program returns given code
# arg1: program to run
# arg2: expected return code (default 0)
function exitCodeOk {
program=$1
code=${2:=0}
$program &> /dev/null
if [ $? -eq $code ] ; then echo -ne "1;" ; else echo -ne "0;" ; fi
}
#Ok if file size > X
# arg1: file
# arg2: min size
function fileBiggerThan {
if [ ! -f $1 ] ; then echo -ne "0;" ; return 0 ; fi
filesize=$(stat --format "%s" $1)
if [ $filesize -lt $2 ] ; then echo -ne "0;" ; else echo -ne "1;" ; fi
}
#Ok if file exists
# arg1: file to check
function fileMustExists {
if [ -f ${1} ] ; then echo -ne "1;"
else echo -ne "0;"
fi
}
#Ok if file DOESNOT exists
# arg1: file to check
function fileMustNOTExists {
if [ -f ${1} ] ; then echo -ne "0;"
else echo -ne "1;"
fi
}
#Ok if dir exists
# arg1: dir to check
function dirMustExists {
if [ -d ${1} ] ; then echo -ne "1;"
else echo -ne "0;"
fi
}
# Ok if given dir DOESNOT exists
# arg1: dir
function dirMustNOTExists {
if [ -d ${1} ] ; then echo -ne "0;"
else echo -ne "1;"
fi
}
# Ok if some files of given dir contains at least one occurence of pattern
# arg1: dir
# arg2: pattern
function dirMustContains {
dir=$1
shift
string=$@
if [ ! -d $dir ] ; then echo -ne "0;" ; return 0 ;fi
if ( grep -ri -qE "${string}" $dir ) ;
then echo -ne "1;"
else
echo -ne "0;"
fi
}
# Ok if file contains at least one occurence of pattern
# arg1: file
# arg2: pattern
function fileMustContains {
file=$1
shift
string=$@
if [ ! -f $file ] ; then echo -ne "0;" ; return 0 ;fi
if ( grep -i -qE "${string}" $file ) ;
then echo -ne "1;"
else
echo -ne "0;"
fi
}
# Return num of occurences of pattern
# arg1: file
# arg2: pattern
function fileCountPattern {
file=$1
shift
string=$@
if [ ! -f $file ] ; then e 0 ; return 0 ;fi
local size=$(stat --printf '%s' $file)
if [ $size -eq 0 ] ; then e 0 ; return 0 ; fi
num=$(grep -ciE "${string}" $file )
e "$num"
}
# Ok if file contains N pattern
# arg1: file
# arg2: num of expected item
# arg3: pattern
function fileMustContainsNItem {
file=$1
n=$2
shift
string=$@
if [ ! -f $file ] ; then echo -ne "0;" ; return 0 ;fi
num=$(grep -ciE "${string}" $file )
if [ $num -eq $1 ] ;
then echo -ne "1;"
else
echo -ne "0;"
fi
}
# Ok if file DOESNOT contain pattern
# Arg1: file
# ArgN: pattern
function fileMustNOTContains {
file=$1
shift
string=$@
if [ ! -f $file ] ; then echo -ne "0;" ; return 0 ; fi
if ( grep -i -qE "${string}" $file ) ;
then echo -ne "0;"
else
echo -ne "1;"
fi
}
# Ok if given user exists
# Arg1: user
function userExists {
if ( grep -iq $1 /etc/passwd ) ; then e 1 ; else e 0 ; fi
}
# Ok if given group exists
# Arg1: group
function groupExists {
if ( grep -iq $1 /etc/group ) ; then e 1 ; else e 0 ; fi
}
# insert hostname at beginning of result line
function addHeader {
test -f /etc/motd && user="$(cat /etc/motd | sed 's/\n//');"
echo -ne "${user}$(hostname -s);"
}
# get file md5
# arg1: file to checksum
function md5 {
test -f "$1" && local am=$(md5sum "$1" | awk '{print $1}')
echo -ne "${am};"
}
# init pkg list
function _initPkgList {
root="$1"
test -f "${1}/tmp/pkg.list" || chroot "$1" sh -c "rpm -qa > /tmp/pkg.list"
}
# Ok if given package is installed
# arg1: rootfs
# arg2: pkg to check
function pkgInstalled {
_initPkgList $1
if (grep -qi "$2" "${1}/tmp/pkg.list" ) ; then e 1 ; else e 0 ; fi
}
# Ok if given package is NOT installed
# arg1: pkg to check
function pkgNotInstalled {
_initPkgList $1
if (grep -qi "$2" "${1}/tmp/pkg.list" ) ; then e 0 ; else e 1 ; fi
echo -ne "${?};"
}
# ok if given process is running
# arg1: process to check
function processIsRunning {
if ( pgrep -f $1 &> /dev/null ) ; then echo -ne "1;" ; else echo -ne "0;" ; fi
}
#Ok if given command returns 0
# arg1: command to be run
function commandIsWorking {
command=$1
if ( $command &> /dev/null ) ; then echo -ne "1;" ; else echo -ne "0;" ; fi
}
# ok if given pattern is detected on command's stdout or stderr
# arg1: command
# arg2: pattern
function commandStdoutPattern {
command=$1
shift
pattern=$@
if ( $command 2>&1 | grep -qiE "${pattern}" ) ; then echo -ne "1;" ; else echo -ne "0;" ; fi
}
# ok if given service is enabled
# arg1: service
function serviceIsEnabled {
local root=$1
local service=${2}.service
c=$(ls -l ${root}/etc/systemd/system/multi-user.target.wants/ | grep -i ${service} | wc -l)
if [ $c -gt 0 ] ; then e 1 ; else e 0 ; fi
}
# ok if output of given url contains given stuff
# arg1: url
# arg2: string
function okIfCurl {
url=$1
shift
if ( curl -q "${url}" | grep -q "$@" ) ; then echo -ne "1;" ; else echo -ne "0;" ; fi
}