diff --git a/rpm/sysak-build-nodep-aarch64.sh b/rpm/sysak-build-nodep-aarch64.sh index f2680985ce2055fbc75b2cae2832a8232f03275c..2c712b6bade1303eeb08fcf4c89988915bb1108e 100755 --- a/rpm/sysak-build-nodep-aarch64.sh +++ b/rpm/sysak-build-nodep-aarch64.sh @@ -47,6 +47,8 @@ mkdir -p \$RPM_BUILD_ROOT/usr/lib/systemd/system/ #/bin/cp -f $BUILD_DIR/.sysak_components/tools/dist/app/collector/plugin.yaml \$RPM_BUILD_ROOT/etc/sysak/ /bin/cp $SOURCE_DIR/rpm/sysak.service \$RPM_BUILD_ROOT/usr/lib/systemd/system/ /bin/cp $SOURCE_DIR/rpm/sysak_server.conf \$RPM_BUILD_ROOT/usr/local/sysak/ +/bin/cp -rf $SOURCE_DIR/source/tools/bclinux/checkcommand/*.sh \$RPM_BUILD_ROOT/usr/local/sysak/.sysak_components/tools/ + %preun systemctl stop sysak diff --git a/rpm/sysak-build-nodep.sh b/rpm/sysak-build-nodep.sh index e194c14e5027c96dfe5e4e966cfe54ec04a000c6..48f19b8134d3c8d0c20dac0552eeda2a9ec26d13 100755 --- a/rpm/sysak-build-nodep.sh +++ b/rpm/sysak-build-nodep.sh @@ -50,6 +50,7 @@ mkdir -p \$RPM_BUILD_ROOT/usr/lib/systemd/system/ /bin/cp -f $BUILD_DIR/.sysak_components/tools/dist/app/etc/* \$RPM_BUILD_ROOT/etc/sysak/ /bin/cp $SOURCE_DIR/rpm/sysak.service \$RPM_BUILD_ROOT/usr/lib/systemd/system/ /bin/cp $SOURCE_DIR/rpm/sysak_server.conf \$RPM_BUILD_ROOT/usr/local/sysak/ +/bin/cp -rf $SOURCE_DIR/source/tools/bclinux/checkcommand/*.sh \$RPM_BUILD_ROOT/usr/local/sysak/.sysak_components/tools/ %preun systemctl stop sysak diff --git a/rpm/sysak-build.sh b/rpm/sysak-build.sh index e68b7ed89470ef430cfb15cc5b8bb03e97924719..23806654d27f97ebf2c191a63a061078ee13e547 100755 --- a/rpm/sysak-build.sh +++ b/rpm/sysak-build.sh @@ -45,6 +45,7 @@ mkdir -p \$RPM_BUILD_ROOT/usr/lib/systemd/system/ /bin/cp $SOURCE_DIR/rpm/sysak.service \$RPM_BUILD_ROOT/usr/lib/systemd/system/ /bin/cp -f $BUILD_DIR/.sysak_components/tools/monitor/sysakmon.conf \$RPM_BUILD_ROOT/usr/local/sysak/ /bin/cp $SOURCE_DIR/rpm/sysak_server.conf \$RPM_BUILD_ROOT/usr/local/sysak/ +/bin/cp -rf $SOURCE_DIR/source/tools/bclinux/checkcommand/*.sh \$RPM_BUILD_ROOT/usr/local/sysak/.sysak_components/tools/ %preun diff --git a/source/tools/bclinux/Makefile b/source/tools/bclinux/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..6a58b3a5ece546dfb4ae837da8a53425d6927491 --- /dev/null +++ b/source/tools/bclinux/Makefile @@ -0,0 +1 @@ +include $(SRC)/mk/sub.mk diff --git a/source/tools/bclinux/checkcommand/Makefile b/source/tools/bclinux/checkcommand/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..a1231550eda6568af7c017ca6606860713808bfc --- /dev/null +++ b/source/tools/bclinux/checkcommand/Makefile @@ -0,0 +1,2 @@ +target := checkcommand +include $(SRC)/mk/sh.mk diff --git a/source/tools/bclinux/checkcommand/README.md b/source/tools/bclinux/checkcommand/README.md new file mode 100644 index 0000000000000000000000000000000000000000..c58ed89a8a1ecd55f4542a058f5e8101a6a2f79a --- /dev/null +++ b/source/tools/bclinux/checkcommand/README.md @@ -0,0 +1,2 @@ +# 功能说明 +系统指令支持 diff --git a/source/tools/bclinux/checkcommand/checkcommand.sh b/source/tools/bclinux/checkcommand/checkcommand.sh new file mode 100644 index 0000000000000000000000000000000000000000..6ef352911f3027b5d9de7a8485938c8addf3fcb7 --- /dev/null +++ b/source/tools/bclinux/checkcommand/checkcommand.sh @@ -0,0 +1,69 @@ +#!/usr/bin/bash + +# 创建日期: 2024-10-15 + +# 获取脚本所在目录 +OET_PATH=$(cd "$(dirname "$0")" || exit 1; pwd) +source "$OET_PATH/common_lib.sh" + +# 日志文件路径 +LOG_FILE="/var/log/checkcommand.log" + +# 重定向输出到日志文件 +exec 6>&1 +exec 7>&2 +exec 1>>"$LOG_FILE" +exec 2>>"$LOG_FILE" + +# 定义要执行的测试脚本列表 +TEST_SCRIPTS=("test01_lscpu.sh" "test02_uname.sh") + +# 记录总测试结果 +total_result=0 + +# 执行单个测试脚本的函数 +function run_single_test() { + local script=$1 + local script_path="$OET_PATH/$script" + + #LOG_INFO "开始执行测试脚本: $script_path" + + # 源入测试脚本并调用 main 函数 + source "$script_path" && main "$@" + + # 检查测试脚本的执行结果 + local result=$? + if [ $result -ne 0 ]; then + LOG_ERROR "The result of running the $script_path script is $result" + total_result=$((total_result + 1)) + else + LOG_INFO "The result of running the $script_path script is 0" + fi +} + +# 主函数,执行所有测试脚本 +function main() { + #LOG_INFO "开始执行所有测试脚本..." + + for script in "${TEST_SCRIPTS[@]}"; do + run_single_test "$script" + done + + # 恢复标准输出和标准错误 + exec 1>&6 + exec 2>&7 + exec 6>&- + exec 7>&- + + # 检查总测试结果 + if [ $total_result -eq 0 ]; then + echo "所有测试脚本均已执行,查看日志详情/var/log/checkcommand.log" + else + echo "有 $total_result 个测试脚本执行失败" + fi + + #LOG_INFO "所有测试脚本执行完毕" +} + +# 脚本入口 +main "$@" diff --git a/source/tools/bclinux/checkcommand/common_lib.sh b/source/tools/bclinux/checkcommand/common_lib.sh new file mode 100644 index 0000000000000000000000000000000000000000..77db6fd363c58659d547a8b9ad0582f5d555dc86 --- /dev/null +++ b/source/tools/bclinux/checkcommand/common_lib.sh @@ -0,0 +1,117 @@ +#!/usr/bin/bash + +# 日志文件路径 +LOG_FILE="/var/log/checkcommand.log" + +function LOG_INFO() { + message=$1 + echo "[INFO] $message" >> "$LOG_FILE" +} + +function LOG_ERROR() { + message=$1 + echo "[ERROR] $message" >> "$LOG_FILE" +} + +function LOG_WARN() { + message=$1 + echo "[WARN] $message" >> "$LOG_FILE" +} + +function LOG_DEBUG() { + message=$1 + echo "[DEBUG] $message" >> "$LOG_FILE" +} + +# 结果检查 +function CHECK_RESULT() { + local actual_result=$1 + local expect_result=${2-0} + local mode=${3-0} + local error_log=$4 + local exit_mode=${5-0} + local exec_result=0 + + if [ -z "$actual_result" ]; then + LOG_ERROR "Missing actual error code." + return 1 + fi + + if ! [[ "$mode" =~ ^[0-9]+$ ]]; then + LOG_ERROR "Invalid mode value: $mode" + return 1 + fi + + if ! [[ "$exit_mode" =~ ^[0-9]+$ ]]; then + LOG_ERROR "Invalid exit_mode value: $exit_mode" + return 1 + fi + + if [ "$actual_result" != "$expect_result" ]; then + [ -n "$error_log" ] && LOG_ERROR "$error_log" + ((exec_result++)) + LOG_ERROR "${BASH_SOURCE[1]} line ${BASH_LINENO[0]}" + if [ $exit_mode -eq 1 ]; then + exit 1 + fi + fi + + return 0 +} + +# 执行用例 +function CASE_RESULT() { + local case_result=$1 + local exec_result=0 + + if [ -z "$exec_result" ]; then + if [ $case_result -eq 0 ]; then + LOG_INFO "succeed to execute the case." + exec_result="" + exit 0 + else + LOG_ERROR "failed to execute the case." + exit $case_result + fi + fi + + if [ $exec_result -gt 0 ]; then + LOG_ERROR "failed to execute the case." + exit $exec_result + fi + + LOG_INFO "succeed to execute the case." + exit $exec_result +} + +# 默认测试后清理 +function POST_TEST_DEFAULT() { + LOG_INFO "$0 post_test" +} + +# 主入口 +function main() { + local input_path="$0" + local file_name=$(basename "$input_path" .sh) + local relative_path=${input_path#*local_sh/} + local log_path="/var/log/checkcommand/${relative_path:-$file_name}" + + mkdir -p "$log_path" + exec 6>&1 + exec 7>&2 + exec >>"$log_path"/"$(date +%Y-%m-%d-%T)".log 2>&1 + + trap '[[ $(type -t post_test) ]] && post_test || POST_TEST_DEFAULT' EXIT INT HUP TERM + + if ! rpm -q expect >/dev/null 2>&1; then + if dnf -y install expect; then + LOG_INFO "Succeed to install expect." + else + LOG_ERROR "Failed to install expect." + fi + fi + + [[ $(type -t config_params) ]] && config_params + [[ $(type -t pre_test) ]] && pre_test + [[ $(type -t run_test) ]] && run_test && CASE_RESULT $? +} diff --git a/source/tools/bclinux/checkcommand/test01_lscpu.sh b/source/tools/bclinux/checkcommand/test01_lscpu.sh new file mode 100644 index 0000000000000000000000000000000000000000..8066c39862a09c0c0fd4742ffea436f5d65cb691 --- /dev/null +++ b/source/tools/bclinux/checkcommand/test01_lscpu.sh @@ -0,0 +1,48 @@ +#!/usr/bin/bash + +# 创建日期: 2024-10-15 + +# 获取脚本所在目录 +OET_PATH=$(cd "$(dirname "$0")" || exit 1; pwd) +source "$OET_PATH/common_lib.sh" + +# 环境准备 +function pre_test() { + OLD_LANG=$LANG + export LANG=en_US.UTF-8 +} + +# 测试执行 +function run_test() { + # 初始化测试结果变量 + lscpu_passed=false + + # 检查 lscpu 命令 + lscpu &>/dev/null + CHECK_RESULT $? 0 0 "lscpu 命令执行失败" + if [ $? -eq 0 ]; then + lscpu_passed=true + fi +} + +# 环境清理 +function post_test() { + export LANG=${OLD_LANG} +} + +# 用例调用入口 +function main() { + pre_test + run_test + post_test + + # 返回测试结果 + if [ "$lscpu_passed" = true ]; then + return 0 + else + return 1 + fi +} + +# 脚本入口 +main "$@" diff --git a/source/tools/bclinux/checkcommand/test02_uname.sh b/source/tools/bclinux/checkcommand/test02_uname.sh new file mode 100644 index 0000000000000000000000000000000000000000..70255912607663382fffc7132b136b35ac28102b --- /dev/null +++ b/source/tools/bclinux/checkcommand/test02_uname.sh @@ -0,0 +1,53 @@ +#!/usr/bin/bash + +# 创建日期: 2024-10-15 + +# 获取脚本所在目录 +OET_PATH=$(cd "$(dirname "$0")" || exit 1; pwd) +source "$OET_PATH/common_lib.sh" + +# 环境准备 +function pre_test() { + OLD_LANG=$LANG + export LANG=en_US.UTF-8 +} + +# 测试执行 +function run_test() { + # 初始化测试结果变量 + uname_passed=false + + # 检查 uname 命令 + if command -v uname > /dev/null 2>&1; then + uname -a >/dev/null + local result=$? + CHECK_RESULT $result 0 0 "uname -a 命令执行失败" + if [ $? -eq 0 ]; then + uname_passed=true + fi + else + CHECK_RESULT 1 0 0 "uname 命令未找到" + fi +} + +# 环境清理 +function post_test() { + export LANG=${OLD_LANG} +} + +# 用例调用入口 +function main() { + pre_test + run_test + post_test + + # 返回测试结果 + if [ "$uname_passed" = true ]; then + return 0 + else + return 1 + fi +} + +# 脚本入口 +main "$@"