CloudyScripts 1.6.1 → 1.7.27

Sign up to get free protection for your applications and to get access to all the features.
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}" = "" ]