用户从 CSV 文件创建脚本

用户从 CSV 文件创建脚本

如何创建 shell 脚本 user_create.sh 来解析 csv 文件并创建用户帐户。每个用户帐户的默认权限应为所有者可读 - 可写 - 可执行,组成员可读 - 可执行,其他人不允许访问。CSV 文件以逗号分隔,包含以下列:

  • 真正的名字
  • 用户名
  • 默认密码(首次登录需更改)
  • 团队名字

Cron 作业每天晚上 11:59 记录系统上每个用户的磁盘使用情况,并将这些记录附加到日志文件中 /var/log/storage.log

下面是我现在所拥有的,但由于某种原因它无法工作。

下面是我现在所拥有的,但由于某种原因它无法工作。

#!/bin/bash
INPUT=data.csv
OLDIFS=$IFS
IFS=,
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read accountname username password groupname
do
useradd -p $password -g groupname -c $accountname -s /bin/sh $username
done < $INPUT
IFS=$OLDIFS

这是我的简历文件的一部分:

AMELIA SMITH,asmith,AeMga7du,seniormanagement
OLIVIA JOHNSON,ojohnson,AhBob0e0,helpdesk
EMILY WILLIAMS,ewilliams,Ees3uiW0,products
AVA BROWN,abrown,rooyie8G,R&D
ISLA JONES,ijones,aeN6bohp,operations
JESSICA MILLER,jmiller,Eiqu3voh,R&D
POPPY DAVIS,pdavis,Eed3teiv,R&D
ISABELLA GARCIA,igarcia,eeNgi30h,sales

答案1

从我在您自己的脚本中看到的内容来看,为了创建用户,类似这样的操作对您有用:

  • 记住
    • 组名不应包含空格
    • 你根本不能使用-p password,密码应该先加密。

脚本.sh:

#!/bin/bash

file="data"

IFS=","

while read name user pass group
do

getent group $group >/dev/null || groupadd $group   

useradd -m -g $group $user -s /bin/bash

chpasswd <<< "$user:$pass"

# force user to change his/her password after login
passwd -e $user

done < "$file"

/etc/crontab为了监控磁盘空间,我建议在文件中进行如下操作:

59 23 * * * root bash -c "echo ----; date; du -hd1 /home;" >> /var/log/storage.log

相关内容