CloudyScripts 1.6.1 → 1.7.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. data/Rakefile +1 -1
  2. data/lib/audit/checks/APACHE2.group +6 -0
  3. data/lib/audit/checks/APACHE2_CONFIG_01.check +36 -0
  4. data/lib/audit/checks/APACHE2_CONFIG_02.check +34 -0
  5. data/lib/audit/checks/APACHE2_CONFIG_03.check +60 -0
  6. data/lib/audit/checks/APACHE2_CONFIG_04.check +23 -0
  7. data/lib/audit/checks/APACHE2_CONFIG_05.check +23 -0
  8. data/lib/audit/checks/APACHE2_CONFIG_06.check +30 -0
  9. data/lib/audit/checks/APACHE2_INIT_1.check +14 -0
  10. data/lib/audit/checks/APACHE2_INIT_2.check +66 -0
  11. data/lib/audit/checks/APACHE2_INIT_3.check +13 -0
  12. data/lib/audit/checks/APACHE2_USER_7.check +17 -0
  13. data/lib/audit/checks/BACKUP_HOME_DOTFILES.check +26 -0
  14. data/lib/audit/checks/BACKUP_LOG.check +24 -0
  15. data/lib/audit/checks/BACKUP_MAIL.check +19 -0
  16. data/lib/audit/checks/BACKUP_WEB.check +12 -0
  17. data/lib/audit/checks/CONFIGURATION_BACKUP.check +14 -0
  18. data/lib/audit/checks/DIRECTORY_LISTING.check +14 -0
  19. data/lib/audit/checks/DISTRIBUTION_FACTS.check +60 -0
  20. data/lib/audit/checks/DMESG_OUTPUT.check +14 -0
  21. data/lib/audit/checks/FIND_GROUP_FILE.check +6 -0
  22. data/lib/audit/checks/FIND_PASSWD_FILE.check +8 -0
  23. data/lib/audit/checks/FIND_SHADOW_FILE.check +5 -0
  24. data/lib/audit/checks/FIND_SUDOERS_FILE.check +6 -0
  25. data/lib/audit/checks/FREE_SPACE.check +26 -0
  26. data/lib/audit/checks/HAS_AWK.check +30 -0
  27. data/lib/audit/checks/HAS_BASE.check +21 -0
  28. data/lib/audit/checks/HAS_CAT.check +18 -0
  29. data/lib/audit/checks/HAS_COMPRESSOR.check +30 -0
  30. data/lib/audit/checks/HAS_CUT.check +18 -0
  31. data/lib/audit/checks/HAS_DF.check +19 -0
  32. data/lib/audit/checks/HAS_DPKG.check +18 -0
  33. data/lib/audit/checks/HAS_FILE_DOWNLOADER.check +32 -0
  34. data/lib/audit/checks/HAS_FIND.check +18 -0
  35. data/lib/audit/checks/HAS_GREP.check +19 -0
  36. data/lib/audit/checks/HAS_GROUPCHECK.check +23 -0
  37. data/lib/audit/checks/HAS_GROUPS.check +19 -0
  38. data/lib/audit/checks/HAS_HOSTNAME.check +7 -0
  39. data/lib/audit/checks/HAS_ID.check +7 -0
  40. data/lib/audit/checks/HAS_LSB_RELEASE.check +16 -0
  41. data/lib/audit/checks/HAS_MOUNT.check +19 -0
  42. data/lib/audit/checks/HAS_NETSTAT.check +20 -0
  43. data/lib/audit/checks/HAS_PASSWD_CHECK.check +17 -0
  44. data/lib/audit/checks/HAS_PS.check +19 -0
  45. data/lib/audit/checks/HAS_ROUTE.check +19 -0
  46. data/lib/audit/checks/HAS_SH.check +19 -0
  47. data/lib/audit/checks/HAS_SORT.check +17 -0
  48. data/lib/audit/checks/HAS_STAT.check +17 -0
  49. data/lib/audit/checks/HAS_SUPERUSER.check +11 -0
  50. data/lib/audit/checks/HAS_TAIL.check +16 -0
  51. data/lib/audit/checks/HAS_TAR.check +7 -0
  52. data/lib/audit/checks/HAS_TR.check +22 -0
  53. data/lib/audit/checks/HAS_UNAME.check +7 -0
  54. data/lib/audit/checks/HAS_UNIQ.check +17 -0
  55. data/lib/audit/checks/HAS_WC.check +16 -0
  56. data/lib/audit/checks/HAS_WHO.check +18 -0
  57. data/lib/audit/checks/HAS_YUM.check +18 -0
  58. data/lib/audit/checks/LASTLOG.check +28 -0
  59. data/lib/audit/checks/LIST_ROUTES.check +33 -0
  60. data/lib/audit/checks/LIST_USER_ACCOUNTS.check +25 -0
  61. data/lib/audit/checks/LOADED_MODULES.check +22 -0
  62. data/lib/audit/checks/LOCAL_NMAP.check +97 -0
  63. data/lib/audit/checks/LOGGED_USERS.check +28 -0
  64. data/lib/audit/checks/LYNIS_AUTH.group +9 -0
  65. data/lib/audit/checks/LYNIS_AUTH_9204.check +43 -0
  66. data/lib/audit/checks/LYNIS_AUTH_9208.check +35 -0
  67. data/lib/audit/checks/LYNIS_AUTH_9216.check +24 -0
  68. data/lib/audit/checks/LYNIS_AUTH_9222.check +25 -0
  69. data/lib/audit/checks/LYNIS_AUTH_9226.check +24 -0
  70. data/lib/audit/checks/LYNIS_AUTH_9228.check +24 -0
  71. data/lib/audit/checks/LYNIS_AUTH_9252.check +19 -0
  72. data/lib/audit/checks/MAYBE_HAS_BZIP2.check +17 -0
  73. data/lib/audit/checks/MAYBE_HAS_CURL.check +17 -0
  74. data/lib/audit/checks/MAYBE_HAS_DU.check +17 -0
  75. data/lib/audit/checks/MAYBE_HAS_HOSTNAME.check +17 -0
  76. data/lib/audit/checks/MAYBE_HAS_ID.check +17 -0
  77. data/lib/audit/checks/MAYBE_HAS_LSB_RELEASE.check +15 -0
  78. data/lib/audit/checks/MAYBE_HAS_SUPERUSER.check +36 -0
  79. data/lib/audit/checks/MAYBE_HAS_TAR.check +19 -0
  80. data/lib/audit/checks/MAYBE_HAS_UNAME.check +17 -0
  81. data/lib/audit/checks/MAYBE_HAS_WGET.check +17 -0
  82. data/lib/audit/checks/MOUNTED_DEVICES.check +22 -0
  83. data/lib/audit/checks/MYSQL_HISTORY_1.check +29 -0
  84. data/lib/audit/checks/MYSQL_INIT_1.check +9 -0
  85. data/lib/audit/checks/MYSQL_INIT_2.check +12 -0
  86. data/lib/audit/checks/MYSQL_INIT_3.check +7 -0
  87. data/lib/audit/checks/PACKAGES_INSTALLED_DPKG.check +38 -0
  88. data/lib/audit/checks/PACKAGES_INSTALLED_YUM.check +36 -0
  89. data/lib/audit/checks/PASSWORD_INFORMATION.check +33 -0
  90. data/lib/audit/checks/PLATFORM_FACTS.check +35 -0
  91. data/lib/audit/checks/PORTS_OPEN_NETSTAT.check +121 -0
  92. data/lib/audit/checks/PROCESS_LIST.check +87 -0
  93. data/lib/audit/checks/SLOW.group +7 -0
  94. data/lib/audit/checks/SLOW_1.check +4 -0
  95. data/lib/audit/checks/SLOW_2.check +4 -0
  96. data/lib/audit/checks/SLOW_3.check +4 -0
  97. data/lib/audit/checks/SSH.group +14 -0
  98. data/lib/audit/checks/SSH_CONFIG_01.check +12 -0
  99. data/lib/audit/checks/SSH_CONFIG_02.check +15 -0
  100. data/lib/audit/checks/SSH_CONFIG_03.check +13 -0
  101. data/lib/audit/checks/SSH_CONFIG_04.check +11 -0
  102. data/lib/audit/checks/SSH_CONFIG_05.check +12 -0
  103. data/lib/audit/checks/SSH_CONFIG_06.check +12 -0
  104. data/lib/audit/checks/SSH_CONFIG_07.check +11 -0
  105. data/lib/audit/checks/SSH_CONFIG_08.check +12 -0
  106. data/lib/audit/checks/SSH_CONFIG_09.check +12 -0
  107. data/lib/audit/checks/SSH_CONFIG_10.check +15 -0
  108. data/lib/audit/checks/SSH_CONFIG_11.check +14 -0
  109. data/lib/audit/checks/SSH_INIT_1.check +9 -0
  110. data/lib/audit/checks/SSH_INIT_2.check +12 -0
  111. data/lib/audit/checks/SSH_KEYS_1.check +32 -0
  112. data/lib/audit/checks/USERS_INIT_1.check +9 -0
  113. data/lib/audit/checks/USERS_INIT_2.check +5 -0
  114. data/lib/audit/checks/USERS_INIT_3.check +5 -0
  115. data/lib/audit/checks/USERS_INIT_4.check +9 -0
  116. data/lib/audit/checks/USERS_INIT_5.check +10 -0
  117. data/lib/audit/checks/USER_INFORMATION.check +29 -0
  118. data/lib/audit/checks/VARIOUS.group +19 -0
  119. data/lib/audit/checks/VAR_LIST_HOME_DIRECTORIES.check +5 -0
  120. data/lib/audit/checks/benchmark.group +6 -0
  121. data/lib/audit/checks/footer.template +12 -0
  122. data/lib/audit/checks/header.template +10 -0
  123. data/lib/audit/checks/helpers/head.sh +59 -0
  124. data/lib/audit/checks/script_header.template +69 -0
  125. data/lib/audit/create_benchmark.sh +93 -0
  126. data/lib/audit/lib/audit.rb +136 -0
  127. data/lib/audit/lib/audit_facade.rb +5 -0
  128. data/lib/audit/lib/benchmark/audit_benchmark.rb +165 -0
  129. data/lib/audit/lib/benchmark/automatic_dependencies.rb +13 -0
  130. data/lib/audit/lib/benchmark/benchmark_factory.rb +23 -0
  131. data/lib/audit/lib/benchmark/benchmark_result.rb +25 -0
  132. data/lib/audit/lib/benchmark/check.rb +34 -0
  133. data/lib/audit/lib/benchmark/group.rb +30 -0
  134. data/lib/audit/lib/benchmark/item_exception.rb +13 -0
  135. data/lib/audit/lib/benchmark/result_code.rb +11 -0
  136. data/lib/audit/lib/benchmark/rule_result.rb +42 -0
  137. data/lib/audit/lib/benchmark/rule_role.rb +5 -0
  138. data/lib/audit/lib/benchmark/rule_severity.rb +13 -0
  139. data/lib/audit/lib/benchmark/yaml_benchmark.rb +133 -0
  140. data/lib/audit/lib/connection/ami_connection.rb +4 -0
  141. data/lib/audit/lib/connection/connection_factory.rb +27 -0
  142. data/lib/audit/lib/connection/ssh_connection.rb +243 -0
  143. data/lib/audit/lib/ec2_utils.rb +245 -0
  144. data/lib/audit/lib/http_fingerprint.rb +116 -0
  145. data/lib/audit/lib/lazy.rb +37 -0
  146. data/lib/audit/lib/linear_script_generator.rb +31 -0
  147. data/lib/audit/lib/main.rb +13 -0
  148. data/lib/audit/lib/my_option_parser.rb +106 -0
  149. data/lib/audit/lib/nessus_new.rb +290 -0
  150. data/lib/audit/lib/nessus_utils.rb +102 -0
  151. data/lib/audit/lib/parser/command/abstract_command.rb +32 -0
  152. data/lib/audit/lib/parser/command/abstract_command_result.rb +30 -0
  153. data/lib/audit/lib/parser/command/attach_file_command.rb +63 -0
  154. data/lib/audit/lib/parser/command/check_finished_command.rb +45 -0
  155. data/lib/audit/lib/parser/command/cpe_name_command.rb +37 -0
  156. data/lib/audit/lib/parser/command/data_command.rb +43 -0
  157. data/lib/audit/lib/parser/command/listening_port_command.rb +46 -0
  158. data/lib/audit/lib/parser/command/message_command.rb +21 -0
  159. data/lib/audit/lib/parser/command/program_name_command.rb +42 -0
  160. data/lib/audit/lib/parser/parse_exception.rb +2 -0
  161. data/lib/audit/lib/parser/result_type.rb +13 -0
  162. data/lib/audit/lib/parser/script_output_parser.rb +201 -0
  163. data/lib/audit/lib/parser/stdout_line_buffer.rb +43 -0
  164. data/lib/audit/lib/ssh_fingerprint.rb +220 -0
  165. data/lib/audit/lib/ssh_fingerprint2.rb +170 -0
  166. data/lib/audit/lib/ssh_utils.rb +292 -0
  167. data/lib/audit/lib/transformers/web_view_transformer.rb +171 -0
  168. data/lib/audit/lib/transformers/yaml_transformer.rb +50 -0
  169. data/lib/audit/lib/util/random_string.rb +22 -0
  170. data/lib/audit/lib/version.rb +7 -0
  171. data/lib/help/ec2_helper.rb +65 -2
  172. data/lib/help/remote_command_handler.rb +17 -0
  173. data/lib/help/state_transition_helper.rb +8 -0
  174. data/lib/scripts/ec2/open_port_checker.rb +112 -0
  175. data/lib/scripts/ec2/port_range_detector.rb +0 -1
  176. 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,6 @@
1
+ ID: FIND_GROUP_FILE
2
+ Name: Find /etc/group file
3
+ Description: Check that /etc/group file is present and export it in GROUP_FILE.
4
+ Export: [GROUP_FILE]
5
+ Severity: high
6
+ Script: ls /etc/group 2>/dev/null 1>/dev/null && GROUP_FILE=/etc/group
@@ -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,5 @@
1
+ ID: FIND_SHADOW_FILE
2
+ Name: Find /etc/shadow file
3
+ Description: Check that /etc/shadow file is present and export it in SHADOW_FILE.
4
+ Export: [SHADOW_FILE]
5
+ Script: ls /etc/shadow 2>/dev/null 1>/dev/null && SHADOW_FILE=/etc/shadow
@@ -0,0 +1,6 @@
1
+ ID: FIND_SUDOERS_FILE
2
+ Name: Find /etc/sudoers file
3
+ Export: [SUDOERS_FILE]
4
+ Description: Check that /etc/sudoers file is present and export it in SUDOERS_FILE.
5
+ Severity: high
6
+ Script: ls /etc/sudoers 2>/dev/null 1>/dev/null && SUDOERS_FILE=/etc/sudoers
@@ -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
@@ -0,0 +1,7 @@
1
+ ID: HAS_HOSTNAME
2
+ Name: Check for hostname program
3
+ Depends: [MAYBE_HAS_HOSTNAME]
4
+ Imports: [HOSTNAME]
5
+ Description: Require the hostname program.
6
+ Script: |
7
+ ! [ "${HOSTNAME}" = "" ]