forked from docker/docker-bench-security
-
Notifications
You must be signed in to change notification settings - Fork 0
/
helper_lib.sh
48 lines (40 loc) · 1.41 KB
/
helper_lib.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/bin/sh
# Returns the absolute path of a given string
abspath () { case "$1" in /*)printf "%s\n" "$1";; *)printf "%s\n" "$PWD/$1";; esac; }
# Compares versions of software of the format X.Y.Z
do_version_check() {
[ "$1" = "$2" ] && return 10
ver1front=$(printf "%s" "$1" | cut -d "." -f -1)
ver1back=$(printf "%s" "$1" | cut -d "." -f 2-)
ver2front=$(printf "%s" "$2" | cut -d "." -f -1)
ver2back=$(printf "%s" "$2" | cut -d "." -f 2-)
if [ "$ver1front" != "$1" ] || [ "$ver2front" != "$2" ]; then
[ "$ver1front" -gt "$ver2front" ] && return 11
[ "$ver1front" -lt "$ver2front" ] && return 9
[ "$ver1front" = "$1" ] || [ -z "$ver1back" ] && ver1back=0
[ "$ver2front" = "$2" ] || [ -z "$ver2back" ] && ver2back=0
do_version_check "$ver1back" "$ver2back"
return $?
else
[ "$1" -gt "$2" ] && return 11 || return 9
fi
}
# Compares two strings and returns 0 if the second is a substring of the first
contains() {
string="$1"
substring="$2"
if [ "${string#*$substring}" != "$string" ]
then
return 0 # $substring is in $string
else
return 1 # $substring is not in $string
fi
}
# Extracts all commandline args from all running processes named like the first parameter
get_command_line_args() {
PROC="$1"
for PID in $(pgrep -x -o "$PROC")
do
tr "\0" " " < /proc/"$PID"/cmdline
done
}