Skip to content

系统文件检查在Ubuntu中运行情况有异常 #17

@rhchenxm

Description

@rhchenxm
  • 首先,感谢写出这么好的工具,谢谢!
  • 目前版本还存在一些小瑕疵,以下是我的修改建议,供参考。
  • 系统文件检查部分的代码是指定命令的绝对路径,这在Centos类Linux里执行是OK的,但在Ubuntu里,因部分命令路径是不对的,所以运行会有异常。
  • 以下代码我加入which先得到命令路径,同时为了更直观对比系统编译时间,增加输出系统的版本和编译日期。
  • 另外加入文件大小和file格式检查内容。
    CmdFileCheck.txt
#!/bin/bash

# 设置保存文件
ipaddress=$(ip address | grep -oP '(?<=inet )\d+\.\d+\.\d+\.\d+(?=\/2)' | head -n 1)
filename=$ipaddress'_'$(hostname)'_'$(whoami)'_'$(date +%s)_CmdFileCheck_log'.md'

print_msg() {
  echo -e "$1\n" | tee -a $filename
}

print_msg "## 文件检查"

cmdline=(
  "which"
  "ifconfig"
  "ls"
  "login"
  "netstat"
  "top"
  "ps"
  "find"
  "grep"
  "passwd"
  "shadow"
  "curl"
  "wget"
)

# 获取内核版本信息
#kernel_version=$(cat /proc/version)
kernel_version=$(uname -v)
print_msg "系统内核版本及编译日期:$kernel_version"

print_msg "### 系统文件修改时间和大小"
for cmd in "${cmdline[@]}"; do
  # 使用which获取命令的实际路径
  full_path=$(which $cmd)
  if [ -n "$full_path" ]; then
    # 如果命令存在,获取修改时间并格式化
    mod_time=$(stat -c %y "$full_path" | cut -c1-19)
    # formatted_time=$(date -d "$mod_time" "+%Y-%m-%d %H:%M:%S")
    file_size=$(du -sh "$full_path" | cut -f1)
    print_msg "文件:$full_path\t修改日期:$mod_time\t文件大小:$file_size"
  else
    # 如果命令不存在,打印消息
    print_msg "命令 $cmd 不存在"
  fi
done

# 检查是否有file命令,如果有,获取文件类型信息
if command -v file >/dev/null 2>&1; then
  print_msg "### 系统文件类型"
  for cmd in "${cmdline[@]}"; do
    full_path=$(which $cmd)
    if [ -n "$full_path" ]; then
      file_type=$(file -b "$full_path")
    print_msg "文件:$full_path\t\t文件类型:$file_type"
  else
    print_msg "命令 $cmd 不存在"
  fi
done
else
  print_msg "系统无file命令,未检查系统文件类型。"
fi

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions