• 遍历判断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

    可直接查看代码注释

  • 相关阅读:
    python实战根据excel的文件名称这一列的内容,找到电脑D盘的下所对应的文件位置,要求用程序实现
    第一次世界大战 重要词汇与短语
    Spring Cloud Gateway 网关限流
    GPU使用和管理经验
    数据挖掘与分析课程笔记(Chapter 5)
    Android网络通讯之OkHttp
    基于flink与groovy实现全实时动态规则智能营销与风控系统
    随机6位数唯一标识
    ROS2——分布式通信(十二)
    C++反转链表递归
  • 原文地址:https://blog.csdn.net/Mr_wilson_liu/article/details/125331510