CloudyScripts 1.6.1 → 1.7.27
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/lib/audit/checks/APACHE2.group +6 -0
- data/lib/audit/checks/APACHE2_CONFIG_01.check +36 -0
- data/lib/audit/checks/APACHE2_CONFIG_02.check +34 -0
- data/lib/audit/checks/APACHE2_CONFIG_03.check +60 -0
- data/lib/audit/checks/APACHE2_CONFIG_04.check +23 -0
- data/lib/audit/checks/APACHE2_CONFIG_05.check +23 -0
- data/lib/audit/checks/APACHE2_CONFIG_06.check +30 -0
- data/lib/audit/checks/APACHE2_INIT_1.check +14 -0
- data/lib/audit/checks/APACHE2_INIT_2.check +66 -0
- data/lib/audit/checks/APACHE2_INIT_3.check +13 -0
- data/lib/audit/checks/APACHE2_USER_7.check +17 -0
- data/lib/audit/checks/BACKUP_HOME_DOTFILES.check +26 -0
- data/lib/audit/checks/BACKUP_LOG.check +24 -0
- data/lib/audit/checks/BACKUP_MAIL.check +19 -0
- data/lib/audit/checks/BACKUP_WEB.check +12 -0
- data/lib/audit/checks/CONFIGURATION_BACKUP.check +14 -0
- data/lib/audit/checks/DIRECTORY_LISTING.check +14 -0
- data/lib/audit/checks/DISTRIBUTION_FACTS.check +60 -0
- data/lib/audit/checks/DMESG_OUTPUT.check +14 -0
- data/lib/audit/checks/FIND_GROUP_FILE.check +6 -0
- data/lib/audit/checks/FIND_PASSWD_FILE.check +8 -0
- data/lib/audit/checks/FIND_SHADOW_FILE.check +5 -0
- data/lib/audit/checks/FIND_SUDOERS_FILE.check +6 -0
- data/lib/audit/checks/FREE_SPACE.check +26 -0
- data/lib/audit/checks/HAS_AWK.check +30 -0
- data/lib/audit/checks/HAS_BASE.check +21 -0
- data/lib/audit/checks/HAS_CAT.check +18 -0
- data/lib/audit/checks/HAS_COMPRESSOR.check +30 -0
- data/lib/audit/checks/HAS_CUT.check +18 -0
- data/lib/audit/checks/HAS_DF.check +19 -0
- data/lib/audit/checks/HAS_DPKG.check +18 -0
- data/lib/audit/checks/HAS_FILE_DOWNLOADER.check +32 -0
- data/lib/audit/checks/HAS_FIND.check +18 -0
- data/lib/audit/checks/HAS_GREP.check +19 -0
- data/lib/audit/checks/HAS_GROUPCHECK.check +23 -0
- data/lib/audit/checks/HAS_GROUPS.check +19 -0
- data/lib/audit/checks/HAS_HOSTNAME.check +7 -0
- data/lib/audit/checks/HAS_ID.check +7 -0
- data/lib/audit/checks/HAS_LSB_RELEASE.check +16 -0
- data/lib/audit/checks/HAS_MOUNT.check +19 -0
- data/lib/audit/checks/HAS_NETSTAT.check +20 -0
- data/lib/audit/checks/HAS_PASSWD_CHECK.check +17 -0
- data/lib/audit/checks/HAS_PS.check +19 -0
- data/lib/audit/checks/HAS_ROUTE.check +19 -0
- data/lib/audit/checks/HAS_SH.check +19 -0
- data/lib/audit/checks/HAS_SORT.check +17 -0
- data/lib/audit/checks/HAS_STAT.check +17 -0
- data/lib/audit/checks/HAS_SUPERUSER.check +11 -0
- data/lib/audit/checks/HAS_TAIL.check +16 -0
- data/lib/audit/checks/HAS_TAR.check +7 -0
- data/lib/audit/checks/HAS_TR.check +22 -0
- data/lib/audit/checks/HAS_UNAME.check +7 -0
- data/lib/audit/checks/HAS_UNIQ.check +17 -0
- data/lib/audit/checks/HAS_WC.check +16 -0
- data/lib/audit/checks/HAS_WHO.check +18 -0
- data/lib/audit/checks/HAS_YUM.check +18 -0
- data/lib/audit/checks/LASTLOG.check +28 -0
- data/lib/audit/checks/LIST_ROUTES.check +33 -0
- data/lib/audit/checks/LIST_USER_ACCOUNTS.check +25 -0
- data/lib/audit/checks/LOADED_MODULES.check +22 -0
- data/lib/audit/checks/LOCAL_NMAP.check +97 -0
- data/lib/audit/checks/LOGGED_USERS.check +28 -0
- data/lib/audit/checks/LYNIS_AUTH.group +9 -0
- data/lib/audit/checks/LYNIS_AUTH_9204.check +43 -0
- data/lib/audit/checks/LYNIS_AUTH_9208.check +35 -0
- data/lib/audit/checks/LYNIS_AUTH_9216.check +24 -0
- data/lib/audit/checks/LYNIS_AUTH_9222.check +25 -0
- data/lib/audit/checks/LYNIS_AUTH_9226.check +24 -0
- data/lib/audit/checks/LYNIS_AUTH_9228.check +24 -0
- data/lib/audit/checks/LYNIS_AUTH_9252.check +19 -0
- data/lib/audit/checks/MAYBE_HAS_BZIP2.check +17 -0
- data/lib/audit/checks/MAYBE_HAS_CURL.check +17 -0
- data/lib/audit/checks/MAYBE_HAS_DU.check +17 -0
- data/lib/audit/checks/MAYBE_HAS_HOSTNAME.check +17 -0
- data/lib/audit/checks/MAYBE_HAS_ID.check +17 -0
- data/lib/audit/checks/MAYBE_HAS_LSB_RELEASE.check +15 -0
- data/lib/audit/checks/MAYBE_HAS_SUPERUSER.check +36 -0
- data/lib/audit/checks/MAYBE_HAS_TAR.check +19 -0
- data/lib/audit/checks/MAYBE_HAS_UNAME.check +17 -0
- data/lib/audit/checks/MAYBE_HAS_WGET.check +17 -0
- data/lib/audit/checks/MOUNTED_DEVICES.check +22 -0
- data/lib/audit/checks/MYSQL_HISTORY_1.check +29 -0
- data/lib/audit/checks/MYSQL_INIT_1.check +9 -0
- data/lib/audit/checks/MYSQL_INIT_2.check +12 -0
- data/lib/audit/checks/MYSQL_INIT_3.check +7 -0
- data/lib/audit/checks/PACKAGES_INSTALLED_DPKG.check +38 -0
- data/lib/audit/checks/PACKAGES_INSTALLED_YUM.check +36 -0
- data/lib/audit/checks/PASSWORD_INFORMATION.check +33 -0
- data/lib/audit/checks/PLATFORM_FACTS.check +35 -0
- data/lib/audit/checks/PORTS_OPEN_NETSTAT.check +121 -0
- data/lib/audit/checks/PROCESS_LIST.check +87 -0
- data/lib/audit/checks/SLOW.group +7 -0
- data/lib/audit/checks/SLOW_1.check +4 -0
- data/lib/audit/checks/SLOW_2.check +4 -0
- data/lib/audit/checks/SLOW_3.check +4 -0
- data/lib/audit/checks/SSH.group +14 -0
- data/lib/audit/checks/SSH_CONFIG_01.check +12 -0
- data/lib/audit/checks/SSH_CONFIG_02.check +15 -0
- data/lib/audit/checks/SSH_CONFIG_03.check +13 -0
- data/lib/audit/checks/SSH_CONFIG_04.check +11 -0
- data/lib/audit/checks/SSH_CONFIG_05.check +12 -0
- data/lib/audit/checks/SSH_CONFIG_06.check +12 -0
- data/lib/audit/checks/SSH_CONFIG_07.check +11 -0
- data/lib/audit/checks/SSH_CONFIG_08.check +12 -0
- data/lib/audit/checks/SSH_CONFIG_09.check +12 -0
- data/lib/audit/checks/SSH_CONFIG_10.check +15 -0
- data/lib/audit/checks/SSH_CONFIG_11.check +14 -0
- data/lib/audit/checks/SSH_INIT_1.check +9 -0
- data/lib/audit/checks/SSH_INIT_2.check +12 -0
- data/lib/audit/checks/SSH_KEYS_1.check +32 -0
- data/lib/audit/checks/USERS_INIT_1.check +9 -0
- data/lib/audit/checks/USERS_INIT_2.check +5 -0
- data/lib/audit/checks/USERS_INIT_3.check +5 -0
- data/lib/audit/checks/USERS_INIT_4.check +9 -0
- data/lib/audit/checks/USERS_INIT_5.check +10 -0
- data/lib/audit/checks/USER_INFORMATION.check +29 -0
- data/lib/audit/checks/VARIOUS.group +19 -0
- data/lib/audit/checks/VAR_LIST_HOME_DIRECTORIES.check +5 -0
- data/lib/audit/checks/benchmark.group +6 -0
- data/lib/audit/checks/footer.template +12 -0
- data/lib/audit/checks/header.template +10 -0
- data/lib/audit/checks/helpers/head.sh +59 -0
- data/lib/audit/checks/script_header.template +69 -0
- data/lib/audit/create_benchmark.sh +93 -0
- data/lib/audit/lib/audit.rb +136 -0
- data/lib/audit/lib/audit_facade.rb +5 -0
- data/lib/audit/lib/benchmark/audit_benchmark.rb +165 -0
- data/lib/audit/lib/benchmark/automatic_dependencies.rb +13 -0
- data/lib/audit/lib/benchmark/benchmark_factory.rb +23 -0
- data/lib/audit/lib/benchmark/benchmark_result.rb +25 -0
- data/lib/audit/lib/benchmark/check.rb +34 -0
- data/lib/audit/lib/benchmark/group.rb +30 -0
- data/lib/audit/lib/benchmark/item_exception.rb +13 -0
- data/lib/audit/lib/benchmark/result_code.rb +11 -0
- data/lib/audit/lib/benchmark/rule_result.rb +42 -0
- data/lib/audit/lib/benchmark/rule_role.rb +5 -0
- data/lib/audit/lib/benchmark/rule_severity.rb +13 -0
- data/lib/audit/lib/benchmark/yaml_benchmark.rb +133 -0
- data/lib/audit/lib/connection/ami_connection.rb +4 -0
- data/lib/audit/lib/connection/connection_factory.rb +27 -0
- data/lib/audit/lib/connection/ssh_connection.rb +243 -0
- data/lib/audit/lib/ec2_utils.rb +245 -0
- data/lib/audit/lib/http_fingerprint.rb +116 -0
- data/lib/audit/lib/lazy.rb +37 -0
- data/lib/audit/lib/linear_script_generator.rb +31 -0
- data/lib/audit/lib/main.rb +13 -0
- data/lib/audit/lib/my_option_parser.rb +106 -0
- data/lib/audit/lib/nessus_new.rb +290 -0
- data/lib/audit/lib/nessus_utils.rb +102 -0
- data/lib/audit/lib/parser/command/abstract_command.rb +32 -0
- data/lib/audit/lib/parser/command/abstract_command_result.rb +30 -0
- data/lib/audit/lib/parser/command/attach_file_command.rb +63 -0
- data/lib/audit/lib/parser/command/check_finished_command.rb +45 -0
- data/lib/audit/lib/parser/command/cpe_name_command.rb +37 -0
- data/lib/audit/lib/parser/command/data_command.rb +43 -0
- data/lib/audit/lib/parser/command/listening_port_command.rb +46 -0
- data/lib/audit/lib/parser/command/message_command.rb +21 -0
- data/lib/audit/lib/parser/command/program_name_command.rb +42 -0
- data/lib/audit/lib/parser/parse_exception.rb +2 -0
- data/lib/audit/lib/parser/result_type.rb +13 -0
- data/lib/audit/lib/parser/script_output_parser.rb +201 -0
- data/lib/audit/lib/parser/stdout_line_buffer.rb +43 -0
- data/lib/audit/lib/ssh_fingerprint.rb +220 -0
- data/lib/audit/lib/ssh_fingerprint2.rb +170 -0
- data/lib/audit/lib/ssh_utils.rb +292 -0
- data/lib/audit/lib/transformers/web_view_transformer.rb +171 -0
- data/lib/audit/lib/transformers/yaml_transformer.rb +50 -0
- data/lib/audit/lib/util/random_string.rb +22 -0
- data/lib/audit/lib/version.rb +7 -0
- data/lib/help/ec2_helper.rb +65 -2
- data/lib/help/remote_command_handler.rb +17 -0
- data/lib/help/state_transition_helper.rb +8 -0
- data/lib/scripts/ec2/open_port_checker.rb +112 -0
- data/lib/scripts/ec2/port_range_detector.rb +0 -1
- metadata +175 -16
@@ -0,0 +1,14 @@
|
|
1
|
+
ID: DIRECTORY_LISTING
|
2
|
+
Name: Create a directory listing of all files on the root filesystem
|
3
|
+
Depends: [HAS_FIND, HAS_COMPRESSOR, MAYBE_HAS_SUPERUSER]
|
4
|
+
Imports: [FIND, STREAM_COMPRESSOR, STREAM_COMPRESSOR_SUFFIX, RUN_AS_SUPERUSER]
|
5
|
+
Description: >
|
6
|
+
Create a listing of all directories and files on the root filesystem.
|
7
|
+
Script: |
|
8
|
+
${RUN_AS_SUPERUSER} ${FIND} / -mount -ls | ${STREAM_COMPRESSOR} > ${AUDIT_DIRECTORY}/DIRECTORY_LISTING.txt.${STREAM_COMPRESSOR_SUFFIX}
|
9
|
+
TMP_EXITCODE=$?
|
10
|
+
if [ ${TMP_EXITCODE} -eq 0 ]
|
11
|
+
then
|
12
|
+
script_attach_file "${AUDIT_DIRECTORY}/DIRECTORY_LISTING.txt.${STREAM_COMPRESSOR_SUFFIX}" "A complete directory listing of the audited host"
|
13
|
+
script_set_exit_code ${TMP_EXITCODE}
|
14
|
+
fi
|
@@ -0,0 +1,60 @@
|
|
1
|
+
ID: DISTRIBUTION_FACTS
|
2
|
+
Name: Get linux distribution facts
|
3
|
+
Depends: [MAYBE_HAS_LSB_RELEASE, HAS_CUT, HAS_BASE]
|
4
|
+
Exports: [DISTRIBUTION_NAME]
|
5
|
+
Imports: [HEAD, SED, CUT, LSB_RELEASE]
|
6
|
+
Description: >
|
7
|
+
Get platform facts like processor, architecture, operating system ...
|
8
|
+
Script: |
|
9
|
+
if [ ! "${LSB_RELEASE}" = "" ]; then
|
10
|
+
TMP_DIST_NAME=$(${LSB_RELEASE} -i 2>/dev/null)
|
11
|
+
TMP_DIST_RELEASE=$(${LSB_RELEASE} -r 2>/dev/null)
|
12
|
+
TMP_DIST_CODENAME=$(${LSB_RELEASE} -c 2>/dev/null)
|
13
|
+
TMP_DIST_DESCRIPTION=$(${LSB_RELEASE} -d 2>/dev/null)
|
14
|
+
elif [ -r "/etc/fedora-release" ]; then
|
15
|
+
TMP_DIST_NAME=$( ${CAT} /etc/fedora-release | ${CUT} -d' ' -f1 )
|
16
|
+
TMP_DIST_RELEASE=$( ${CAT} /etc/fedora-release | ${CUT} -d' ' -f2-3 )
|
17
|
+
TMP_DIST_CODENAME=$( ${CAT} /etc/fedora-release | ${SED} -e 's/^.*(\(.*\)).*$/\1/' )
|
18
|
+
elif [ -r '/etc/release' ]; then
|
19
|
+
TMP_DIST_NAME=$( head -n1 /etc/release | sed 's/ *\([^0-9]*\) [0-9].*/\1/' )
|
20
|
+
elif [ -r '/etc/arch-release' ]; then
|
21
|
+
TMP_DIST_NAME="Arch Linux"
|
22
|
+
elif [ -r '/etc/debian_version' ]; then
|
23
|
+
TMP_DIST_NAME='Debian'
|
24
|
+
TMP_DIST_RELEASE=$( ${CAT} /etc/debian_version )
|
25
|
+
elif [ -r '/etc/gentoo-release' ]; then
|
26
|
+
TMP_DIST_NAME='Gentoo'
|
27
|
+
elif [ -r '/etc/knoppix-version' ]; then
|
28
|
+
TMP_DIST_NAME='Knoppix'
|
29
|
+
elif [ -r '/etc/mandrake-release' ]; then
|
30
|
+
TMP_DIST_NAME='Mandrake'
|
31
|
+
elif [ -r '/etc/pardus-release' ]; then
|
32
|
+
TMP_DIST_NAME='Pardus'
|
33
|
+
elif [ -r '/etc/puppyversion' ]; then
|
34
|
+
TMP_DIST_NAME='Puppy Linux'
|
35
|
+
elif [ -r '/etc/redhat-release' ]; then
|
36
|
+
TMP_DIST_NAME='Red Hat'
|
37
|
+
elif [ -r '/etc/sabayon-release' ]; then
|
38
|
+
TMP_DIST_NAME='Sabayon'
|
39
|
+
elif [ -r '/etc/slackware-version' ]; then
|
40
|
+
TMP_DIST_NAME='Slackware'
|
41
|
+
elif [ -r '/etc/SuSE-release' ]; then
|
42
|
+
TMP_DIST_NAME=$( ${CAT} /etc/SuSE-release | ${HEAD} -n1 | ${CUT} -d' ' -f1 )
|
43
|
+
TMP_DIST_VERSION=$( ${CAT} /etc/SuSE-release | ${HEAD} -n1 | ${CUT} -d' ' -f2 )
|
44
|
+
elif [ -r '/etc/xandros-desktop-version' ]; then
|
45
|
+
TMP_DIST_NAME='Xandros'
|
46
|
+
elif [ -r '/etc/zenwalk-version' ]; then
|
47
|
+
TMP_DIST_NAME="Zenwalk"
|
48
|
+
fi
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
script_data "machine_information.distribution.name" "${TMP_DIST_NAME}"
|
53
|
+
script_data "machine_information.distribution.release" "${TMP_DIST_RELEASE}"
|
54
|
+
if [ ! "${TMP_DIST_CODENAME}" = "" ]; then script_data "machine_information.distribution.codename" "${TMP_DIST_CODENAME}"; fi
|
55
|
+
if [ ! "${TMP_DIST_DESCRIPTION}" = "" ]; then script_data "machine_information.distribution.description" "${TMP_DIST_DESCRIPTION}"; fi
|
56
|
+
DISTRIBUTION_NAME="${TMP_DIST_NAME}"
|
57
|
+
! false
|
58
|
+
|
59
|
+
|
60
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
ID: DMESG_OUTPUT
|
2
|
+
Name: Save output of dmesg
|
3
|
+
Depends: [HAS_FIND, HAS_COMPRESSOR]
|
4
|
+
Imports: [FIND, STREAM_COMPRESSOR]
|
5
|
+
Description: >
|
6
|
+
Save output of dmesg to a file.
|
7
|
+
Script: |
|
8
|
+
dmesg | ${STREAM_COMPRESSOR} > ${AUDIT_DIRECTORY}/DMESG_OUTPUT.txt.${STREAM_COMPRESSOR_SUFFIX}
|
9
|
+
TMP_EXITCODE=$?
|
10
|
+
if [ ${TMP_EXITCODE} -eq 0 ]
|
11
|
+
then
|
12
|
+
script_attach_file "${AUDIT_DIRECTORY}/DMESG_OUTPUT.txt.${STREAM_COMPRESSOR_SUFFIX}" "output of the dmesg command"
|
13
|
+
script_set_exit_code ${TMP_EXITCODE}
|
14
|
+
fi
|
@@ -0,0 +1,8 @@
|
|
1
|
+
ID: FIND_PASSWD_FILE
|
2
|
+
Name: Find /etc/passwd file
|
3
|
+
Description: Check that /etc/passwd file is present and export it in PASSWD_FILE.
|
4
|
+
Fail-Message: >
|
5
|
+
File /etc/passwd not found. This file is essential for all checks on users and home directories.
|
6
|
+
Please verify your installation, as this file should exist.
|
7
|
+
Severity: high
|
8
|
+
Script: ls /etc/passwd 2>/dev/null 1>/dev/null && PASSWD_FILE=/etc/passwd
|
@@ -0,0 +1,26 @@
|
|
1
|
+
ID: FREE_SPACE
|
2
|
+
Name: List free and used space for devices.
|
3
|
+
Depends: [HAS_AWK, HAS_DF, HAS_BASE, HAS_TAIL]
|
4
|
+
Imports: [AWK, DF, SED, TAIL]
|
5
|
+
Description: List free and used spaces for devices mounted in the file system.
|
6
|
+
Script: |
|
7
|
+
IFS=$( printf "\n+" ); IFS=${IFS%+}
|
8
|
+
TMP_OUTPUT=$( ${DF} | ${TAIL} -n +2 )
|
9
|
+
|
10
|
+
for TMP_LINE in ${TMP_OUTPUT}
|
11
|
+
do
|
12
|
+
TMP_DEVICE=$( echo ${TMP_LINE} | ${AWK} '{ print $1 }' )
|
13
|
+
TMP_SIZE=$( echo ${TMP_LINE} | ${AWK} '{ print $2 }' )
|
14
|
+
TMP_USED=$( echo ${TMP_LINE} | ${AWK} '{ print $3 }' )
|
15
|
+
TMP_AVAILABLE=$( echo ${TMP_LINE} | ${AWK} '{ print $4 }' )
|
16
|
+
TMP_USED_PERCENT=$( echo ${TMP_LINE} | ${AWK} '{ print $5 }' )
|
17
|
+
TMP_MOUNTPOINT=$( echo ${TMP_LINE} | ${AWK} '{ print $6 }' )
|
18
|
+
|
19
|
+
script_data "filesystem.mountpoints.{${TMP_MOUNTPOINT}}.device" "${TMP_DEVICE}"
|
20
|
+
script_data "filesystem.mountpoints.{${TMP_MOUNTPOINT}}.size" "${TMP_SIZE}"
|
21
|
+
script_data "filesystem.mountpoints.{${TMP_MOUNTPOINT}}.used" "${TMP_USED}"
|
22
|
+
script_data "filesystem.mountpoints.{${TMP_MOUNTPOINT}}.available" "${TMP_AVAILABLE}"
|
23
|
+
script_data "filesystem.mountpoints.{${TMP_MOUNTPOINT}}.used_percent" "${TMP_USED_PERCENT}"
|
24
|
+
done
|
25
|
+
! false
|
26
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
ID: HAS_AWK
|
2
|
+
Name: Check for awk program
|
3
|
+
Depends: [HAS_BASE]
|
4
|
+
Exports: [AWK]
|
5
|
+
Imports: [HEAD, SED]
|
6
|
+
Description: Find the awk program and export it to AWK.
|
7
|
+
Type: [check, export, info]
|
8
|
+
Script: |
|
9
|
+
if echo "test" | awk '{ print $1 }' 2>/dev/null 1>/dev/null
|
10
|
+
then
|
11
|
+
AWK=awk
|
12
|
+
if ${AWK} --version 2>/dev/null 1>/dev/null
|
13
|
+
then
|
14
|
+
TMP_AWK_NAME=$(${AWK} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\1/')
|
15
|
+
TMP_AWK_VERSION=$(${AWK} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\2/')
|
16
|
+
#mawk
|
17
|
+
elif ${AWK} -W version 2>/dev/null 1>/dev/null
|
18
|
+
then
|
19
|
+
TMP_AWK_NAME=$(${AWK} -W version 2>/dev/null | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z]\+\)[[:blank:]]\+\([0-9. A-Za-z]\+\),.*$/\1/')
|
20
|
+
TMP_AWK_VERSION=$(${AWK} -W version 2>/dev/null | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z]\+\)[[:blank:]]\+\([0-9. A-Za-z]\+\),.*$/\2/')
|
21
|
+
else
|
22
|
+
TMP_AWK_NAME="awk"
|
23
|
+
TMP_AWK_VERSION="unknown"
|
24
|
+
fi
|
25
|
+
script_program_name "${TMP_AWK_NAME}" "${TMP_AWK_VERSION}"
|
26
|
+
! false
|
27
|
+
else
|
28
|
+
script_message "awk not found"
|
29
|
+
false
|
30
|
+
fi
|
@@ -0,0 +1,21 @@
|
|
1
|
+
ID: HAS_BASE
|
2
|
+
Name: Check for base programs
|
3
|
+
Description: Find the head and sed programs and export them to HEAD and SED.
|
4
|
+
Type: [check, export, info]
|
5
|
+
Script: |
|
6
|
+
if echo "" | head 2>/dev/null 1>/dev/null && echo "" | sed -e "" 2>/dev/null 1>/dev/null
|
7
|
+
then
|
8
|
+
HEAD=head
|
9
|
+
SED=sed
|
10
|
+
TMP_HEAD_NAME="$(${HEAD} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\1/')"
|
11
|
+
TMP_HEAD_VERSION="$(${HEAD} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\2/')"
|
12
|
+
TMP_SED_NAME="$(${SED} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\1/')"
|
13
|
+
TMP_SED_VERSION="$(${SED} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\2/')"
|
14
|
+
script_program_name "${TMP_HEAD_NAME}" "${TMP_HEAD_VERSION}"
|
15
|
+
script_program_name "${TMP_SED_NAME}" "${TMP_SED_VERSION}"
|
16
|
+
! false
|
17
|
+
else
|
18
|
+
script_not_found "head"
|
19
|
+
script_not_found "sed"
|
20
|
+
false
|
21
|
+
fi
|
@@ -0,0 +1,18 @@
|
|
1
|
+
ID: HAS_CAT
|
2
|
+
Name: Check for cat program
|
3
|
+
Depends: [HAS_BASE]
|
4
|
+
Imports: [HEAD, SED]
|
5
|
+
Description: Find the cat program and export it to CAT.
|
6
|
+
Type: [check, export, info]
|
7
|
+
Script: |
|
8
|
+
if cat --version 2>/dev/null 1>/dev/null
|
9
|
+
then
|
10
|
+
CAT=cat
|
11
|
+
TMP_CAT_NAME=$(${CAT} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\1/')
|
12
|
+
TMP_CAT_VERSION=$(${CAT} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\2/')
|
13
|
+
script_program_name "${TMP_CAT_NAME}" "${TMP_CAT_VERSION}"
|
14
|
+
! false
|
15
|
+
else
|
16
|
+
script_error_message "cat not found"
|
17
|
+
false
|
18
|
+
fi
|
@@ -0,0 +1,30 @@
|
|
1
|
+
ID: HAS_COMPRESSOR
|
2
|
+
Name: Find a compression program and export it to COMPRESSOR.
|
3
|
+
Depends: [MAYBE_HAS_BZIP2, MAYBE_HAS_TAR]
|
4
|
+
Exports: [COMPRESSOR, STREAM_COMPRESSOR, COMPRESSOR_SUFFIX, STREAM_COMPRESSOR_SUFFIX]
|
5
|
+
Imports: [TAR, BZIP2]
|
6
|
+
Description: >
|
7
|
+
Find a compression program. The program will be exported to COMPRESSOR
|
8
|
+
and can be used by calling it like that:
|
9
|
+
${COMPRESSOR} destination.${COMPRESSOR_SUFFIX} files
|
10
|
+
It is important to not put quotation marks around ${COMPRESSOR}, as the command
|
11
|
+
includes parameters.
|
12
|
+
In the same manner STREAM_COMPRESSOR is exported and can be chained into a stream
|
13
|
+
to compress this stream, p.ex.
|
14
|
+
cat data | ${STREAM_COMPRESSOR} > dest.${STREAM_COMPRESSOR_SUFFIX}
|
15
|
+
Script: |
|
16
|
+
#
|
17
|
+
if [ ! "${TAR}" = "" ]
|
18
|
+
then
|
19
|
+
COMPRESSOR="${TAR} cjf"
|
20
|
+
COMPRESSOR_SUFFIX="tar.bz2"
|
21
|
+
fi
|
22
|
+
|
23
|
+
if [ ! "${BZIP2}" = "" ]
|
24
|
+
then
|
25
|
+
STREAM_COMPRESSOR="${BZIP2} -9c"
|
26
|
+
STREAM_COMPRESSOR_SUFFIX="bz2"
|
27
|
+
fi
|
28
|
+
|
29
|
+
# script is fine if the compressor variables are defined in the end
|
30
|
+
[ ! "${COMPRESSOR}" = "" ] && [ ! "${STREAM_COMPRESSOR}" = "" ]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
ID: HAS_CUT
|
2
|
+
Name: Check for cut program
|
3
|
+
Depends: [HAS_BASE]
|
4
|
+
Imports: [HEAD, SED]
|
5
|
+
Description: Find the cut program and export it to CUT.
|
6
|
+
Type: [check, export, info]
|
7
|
+
Script: |
|
8
|
+
if cut --version 2>/dev/null 1>/dev/null
|
9
|
+
then
|
10
|
+
CUT=cut
|
11
|
+
TMP_CUT_NAME=$(${CUT} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\1/')
|
12
|
+
TMP_CUT_VERSION=$(${CUT} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\2/')
|
13
|
+
script_program_name "${TMP_CUT_NAME}" "${TMP_CUT_VERSION}"
|
14
|
+
! false
|
15
|
+
else
|
16
|
+
script_error_message "not found"
|
17
|
+
false
|
18
|
+
fi
|
@@ -0,0 +1,19 @@
|
|
1
|
+
ID: HAS_DF
|
2
|
+
Name: Check for df
|
3
|
+
Depends: [HAS_BASE]
|
4
|
+
Exports: [DF]
|
5
|
+
Imports: [HEAD, SED]
|
6
|
+
Description: Find the df program and export it to DF.
|
7
|
+
Type: [check, export, info]
|
8
|
+
Script: |
|
9
|
+
if df --version 2>/dev/null 1>/dev/null
|
10
|
+
then
|
11
|
+
DF=df
|
12
|
+
TMP_DF_NAME=$(${DF} --version | ${HEAD} -1 | ${SED} -e 's/^\([A-Za-z() -]\+\)[[:blank:]]\([0-9.]\+\).*$/\1/')
|
13
|
+
TMP_DF_VERSION=$(${DF} --version | ${HEAD} -1 | ${SED} -e 's/^\([A-Za-z() -]\+\)[[:blank:]]\([0-9.]\+\).*$/\2/')
|
14
|
+
script_program_name "${TMP_DF_NAME}" "${TMP_DF_VERSION}"
|
15
|
+
! false
|
16
|
+
else
|
17
|
+
script_message "df not found"
|
18
|
+
false
|
19
|
+
fi
|
@@ -0,0 +1,18 @@
|
|
1
|
+
ID: HAS_DPKG
|
2
|
+
Name: Check for dpkg program
|
3
|
+
Depends: [HAS_BASE]
|
4
|
+
Exports: [DPKG]
|
5
|
+
Imports: [HEAD, SED]
|
6
|
+
Description: Find the dpkg program and export it to DPKG.
|
7
|
+
Script: |
|
8
|
+
if dpkg --version 2>/dev/null 1>/dev/null
|
9
|
+
then
|
10
|
+
DPKG=dpkg
|
11
|
+
TMP_DPKG_NAME=$(${DPKG} --version | ${HEAD} -1 | ${SED} -e 's/^\(.*\)[[:blank:]]\+version.*$/\1/' )
|
12
|
+
TMP_DPKG_VERSION=$(${DPKG} --version | ${HEAD} -1 | ${SED} -e 's/^.*version[[:blank:]]\+\(.*\)$/\1/')
|
13
|
+
script_program_name "${TMP_DPKG_NAME}" "${TMP_DPKG_VERSION}"
|
14
|
+
! false
|
15
|
+
else
|
16
|
+
script_message "dpkg not found"
|
17
|
+
false
|
18
|
+
fi
|
@@ -0,0 +1,32 @@
|
|
1
|
+
ID: HAS_FILE_DOWNLOADER
|
2
|
+
Name: Provide a program that can download files from web servers
|
3
|
+
Description: >
|
4
|
+
Extract all information from the /etc/passwd file
|
5
|
+
and export it as key/value pairs.
|
6
|
+
Depends: [MAYBE_HAS_WGET, MAYBE_HAS_CURL]
|
7
|
+
Imports: [WGET, CURL]
|
8
|
+
Exports: [DOWNLOAD_FILE] #export is a function
|
9
|
+
Script: |
|
10
|
+
if [ ! "${WGET}" = "" ]
|
11
|
+
then
|
12
|
+
DOWNLOAD_FILE() {
|
13
|
+
if [ "$3" = "" ]
|
14
|
+
then
|
15
|
+
${WGET} -O "$1" "$2" 2>/dev/null 1>/dev/null
|
16
|
+
else
|
17
|
+
${WGET} -O "$1" --user=$3 --password=$4 "$2" 2>/dev/null 1>/dev/null
|
18
|
+
fi
|
19
|
+
}
|
20
|
+
elif [ ! "${CURL}" = "" ]
|
21
|
+
then
|
22
|
+
DOWNLOAD_FILE() {
|
23
|
+
if [ "$3" = "" ]
|
24
|
+
then
|
25
|
+
${CURL} -L -o "$1" "$2" 2>/dev/null 1>/dev/null
|
26
|
+
else
|
27
|
+
${CURL} -L -o "$1" --user $3:$4 "$2" 2>/dev/null 1>/dev/null
|
28
|
+
fi
|
29
|
+
}
|
30
|
+
fi
|
31
|
+
|
32
|
+
type DOWNLOAD_FILE 2>/dev/null 1>/dev/null
|
@@ -0,0 +1,18 @@
|
|
1
|
+
ID: HAS_FIND
|
2
|
+
Name: Check for find
|
3
|
+
Depends: [HAS_BASE]
|
4
|
+
Exports: [FIND]
|
5
|
+
Imports: [HEAD, SED]
|
6
|
+
Description: Find the find program and export it to FIND.
|
7
|
+
Script: |
|
8
|
+
if find --version 2>/dev/null 1>/dev/null
|
9
|
+
then
|
10
|
+
FIND=find
|
11
|
+
TMP_FIND_NAME=$(${FIND} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\1/')
|
12
|
+
TMP_FIND_VERSION=$(${FIND} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\2/')
|
13
|
+
script_program_name "${TMP_FIND_NAME}" "${TMP_FIND_VERSION}"
|
14
|
+
! false
|
15
|
+
else
|
16
|
+
script_message "find not found"
|
17
|
+
false
|
18
|
+
fi
|
@@ -0,0 +1,19 @@
|
|
1
|
+
ID: HAS_GREP
|
2
|
+
Name: Check for grep
|
3
|
+
Depends: [HAS_BASE]
|
4
|
+
Exports: [GREP]
|
5
|
+
Imports: [HEAD, SED]
|
6
|
+
Description: Find the grep program and export it to GREP.
|
7
|
+
Type: [check, export, info]
|
8
|
+
Script: |
|
9
|
+
if grep --version 2>/dev/null 1>/dev/null
|
10
|
+
then
|
11
|
+
GREP=grep
|
12
|
+
TMP_GREP_NAME=$(${GREP} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\1/')
|
13
|
+
TMP_GREP_VERSION=$(${GREP} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\2/')
|
14
|
+
script_program_name "${TMP_GREP_NAME}" "${TMP_GREP_VERSION}"
|
15
|
+
! false
|
16
|
+
else
|
17
|
+
script_message "grep not found"
|
18
|
+
false
|
19
|
+
fi
|
@@ -0,0 +1,23 @@
|
|
1
|
+
ID: HAS_GROUPCHECK
|
2
|
+
Name: Find the grpck program
|
3
|
+
Depends: [HAS_BASE, PLATFORM_FACTS, DISTRIBUTION_FACTS]
|
4
|
+
Imports: [HEAD, SED]
|
5
|
+
Description: Find the grpck program and export it to GROUPCHECK.
|
6
|
+
Type: [check, export, info]
|
7
|
+
Script: |
|
8
|
+
grpck -r 2>/dev/null 1>/dev/null
|
9
|
+
if ! [ "$?" = 127 ]
|
10
|
+
then
|
11
|
+
if [ "${OS_NAME}" = "Linux" ] && [ "${DISTRIBUTION_NAME}" = "SuSE" ]
|
12
|
+
then
|
13
|
+
#on SuSE, only print errors, not warnings (option not available on other systems)
|
14
|
+
GROUPCHECK="grpck -q -r"
|
15
|
+
else
|
16
|
+
GROUPCHECK="grpck -r"
|
17
|
+
fi
|
18
|
+
script_program_name "grpck" "unknown"
|
19
|
+
! false
|
20
|
+
else
|
21
|
+
script_message "grpck not found"
|
22
|
+
false
|
23
|
+
fi
|
@@ -0,0 +1,19 @@
|
|
1
|
+
ID: HAS_GROUPS
|
2
|
+
Name: Check for groups command
|
3
|
+
Depends: [HAS_BASE]
|
4
|
+
Exports: [GROUPS]
|
5
|
+
Imports: [HEAD, SED]
|
6
|
+
Description: Find the groups program and export it to GROUPS.
|
7
|
+
Type: [check, export, info]
|
8
|
+
Script: |
|
9
|
+
if groups --version 2>/dev/null 1>/dev/null
|
10
|
+
then
|
11
|
+
GROUPS=groups
|
12
|
+
TMP_GROUPS_NAME=$(${GROUPS} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\1/')
|
13
|
+
TMP_GROUPS_VERSION=$(${GROUPS} --version | ${HEAD} -1 | ${SED} -e 's/\([A-Za-z() ]\+\)[[:blank:]]\([0-9.]\+\)/\2/')
|
14
|
+
script_program_name "${TMP_GROUPS_NAME}" "${TMP_GROUPS_VERSION}"
|
15
|
+
! false
|
16
|
+
else
|
17
|
+
script_error_message "not found"
|
18
|
+
false
|
19
|
+
fi
|