为多个用户脚本创建主文件夹

为多个用户脚本创建主文件夹

我需要创建一个脚本,每天检查用户是否有主文件夹 home/testuser,如果没有,则创建一个。问题是我想从此示例中排除内置帐户:管理员、访客、samba 和其他。当使用 aduc 而不是 zentyal 创建用户时会出现问题。

我会使用 cron 进行日常检查,但不知道如何排除内置用户。

提前致谢!

答案1

正如已经说过的,我们通常不会在这里回答编程问题,但这听起来像是一个有趣的五分钟练习。

提供给您此命令时没有任何迹象表明它按预期工作,因为我的系统始终会创建用户主目录,而且我不会开始捣鼓和弄乱 passwd 文件来为您测试。因此,请先在文本框中运行此命令,或者注释掉执行任何操作的部分(mkdir 和 chown)并输入一些 echo 命令。

所有正常警告均适用:不提供或暗示任何支持;邮寄支票;我最喜欢的 - 它将在一个版本中得到修复。

#!/bin/bash
# Check if users home directory exists 

while read -r LINE; do
  userID=`echo $LINE | awk -F: '{print $3}' `
  if [ "$userID" -ge "1000" -a "$userID" -lt "65534" ] ; then
    userName=`echo $LINE | awk -F: '{print $1}' `
    userHome=`echo $LINE | awk -F: '{print $6}' `
    userGroup=`echo $LINE | awk -F: '{print $4}' `

    if [ ! -d "$userHome" ]; then 
      echo found user $userID $userName is missing home:  $userHome
      mkdir $userHome 
      chown $userName:$userGroup $userHome 
    fi
  fi 
done < /etc/passwd
# Check if users home directory exists 

while read -r LINE; do
  userID=`echo $LINE | awk -F: '{print $3}' `
  if [ "$userID" -ge "1000" -a "$userID" -lt "65534" ] ; then
    userName=`echo $LINE | awk -F: '{print $1}' `
    userHome=`echo $LINE | awk -F: '{print $6}' `
    userGroup=`echo $LINE | awk -F: '{print $4}' `

    if [ ! -d "$userHome" ]; then 
      echo found user $userID $userName is missing home:  $userHome
      mkdir $userHome 
      chown $userName:$userGroup $userHome 
    fi
  fi 
done < /etc/passwd

一定要小心 - 以 root 身份运行任何类型的文件(这需要)可能会对系统造成很大损害。测试,测试,再测试。

相关内容