如何从没有主目录的/ etc / passwd中获取所有用户

问题描述

我试图让所有用户的主目录在/ etc / passwd中提到但不在/ home中。

下面的代码为我提供了/ home中没有的所有主目录,但/ etc / passwd中却存在这些主目录。

cut -d":" -f6 /etc/passwd | grep home | sort | 
    while read dir; do [ -e "$dir" ] || echo Missing $dir; done 

如何从第一列中获取相应用户的列表,并使用mkhomedir_helper(user)从列表中逐个创建对应的/ home目录?

解决方法

Barmar解决方案的其他实施方式:

getBondedDevices

使用getent passwd | sort -t: -k6 | while IFS=: read -r u _ _ _ _ d _ do if [[ "$d" =~ ^/home/ ]] && ! [[ -d "$d" ]] then printf 'Directory %q missing for user: %q\n' "$d" "$u" fi done 允许在文件或NIS(网络信息服务)中提取相同的数据。

getent通过将其与扩展正则表达式匹配来确保主目录以[[ "$d" =~ ^/home/ ]]开头。 /home

,

您必须将用户名保留在读取的数据中。您不需要使用cutread可以将输入拆分为字段并将它们分配给变量。

grep /home/ /etc/passwd | sort -t: -k6 | while IFS=: read -r username _ _ _ _ dir _
do
    if ! [ -d "$dir" ]
    then 
        echo "Username $username missing $dir"
        mkhomedir_helper "$username"
    fi
done

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...