• 遍历判断linux某些目录的文件是否都有执行权限


    1. #!/bin/bash
    2. #:lwp
    3. #收集异常信息文件存放目录
    4. COLLECT_CHECK_SAVE_PATH="/data"
    5. #版本信息
    6. #VERSION_PATH="/appversion"
    7. #检测目录列表
    8. DIR_LIST=(
    9. /usr/bin/
    10. /usr/sbin/
    11. /bin/
    12. /sbin/
    13. )
    14. #允许无执行权限文件
    15. FILE_LIST=(
    16. dont-tar-files.list
    17. )
    18. if [ -f "${COLLECT_CHECK_SAVE_PATH}/permissionfile" ]; then
    19. cat /dev/null >"${COLLECT_CHECK_SAVE_PATH}/permissionfile"
    20. else
    21. touch "${COLLECT_CHECK_SAVE_PATH}/permissionfile"
    22. fi
    23. #重定向文件或创建文件失败则退出
    24. if [ ! $? -eq 0 ];then
    25. exit
    26. fi
    27. #标示权限异常信息文件是否为空
    28. info_perm=""
    29. per_val=""
    30. num=0
    31. dir_name=""
    32. file_perssiom=""
    33. file_name=""
    34. get_file=""
    35. flag=0
    36. for dir_name in "${DIR_LIST[@]}"
    37. do
    38. file_perssiom=$(ls -l "$dir_name")
    39. echo "$file_perssiom" | sed -n "2,$"p | while read -r line #sed -n "2,$"p 表示从第二行到最后一行
    40. do
    41. num=0
    42. flag=0
    43. per_val=$(echo "$line" | awk '{print $1}')
    44. #对权限的x进行计数
    45. num=$(echo "$per_val" | tr -cd x | wc -c)
    46. if [ "$num" -lt 3 ];then
    47. get_file=$(echo "$line" | awk '{print $9}')
    48. #判断无执行权限的文件是否是允许文件
    49. for file_name in "${FILE_LIST[@]}"
    50. do
    51. if [ x"$file_name" = x"$get_file" ];then
    52. flag=1
    53. fi
    54. done
    55. #否则,则存在无运行权限的文件,将文件名echo到记录文件中
    56. if [ "$flag" -eq 0 ];then
    57. echo "$dir_name $(echo "$line" | awk '{print $9" "$1" "$6"-"$7"-"$8}')" >>"${COLLECT_CHECK_SAVE_PATH}/permissionfile"
    58. fi
    59. fi
    60. done
    61. done
    62. info_perm=$(cat "${COLLECT_CHECK_SAVE_PATH}/permissionfile")
    63. #x是一个占位符,用于避免变量为空时出现语法错误;这里判断记录文件是否为空,为空则删除记录文件
    64. if [ x"$info_perm" = x ];then
    65. rm "${COLLECT_CHECK_SAVE_PATH}/permissionfile"
    66. echo "success.no error"
    67. fi
    68. #如果不为空,则输出记录文件
    69. if [ -f "${COLLECT_CHECK_SAVE_PATH}/permissionfile" ];then
    70. echo "ERROR! ${COLLECT_CHECK_SAVE_PATH}/permissionfile exists, include NOPERMISSION file"
    71. fi

    可直接查看代码注释

  • 相关阅读:
    NET框架程序设计-第4章类型基础
    16-自动化测试——selenium介绍
    C++学习日记:关于我决定开始学习C++的那些事
    通用大模型
    简单好看个人引导页毛玻璃页面 HTML 源码
    Python进阶必备之JS逆向-某榜某博数据采集
    【快应用】如何跳转应用市场app详情页?
    性能测试 —— 生成html测试报告、参数化、jvm监控
    Vue 源码解读(10)—— 编译器 之 生成渲染函数
    缺陷检测1
  • 原文地址:https://blog.csdn.net/Mr_wilson_liu/article/details/125331510