通过将2个日期与Bash进行比较来创建用户

问题描述

我有一个学校的CSV表,其中包含名,姓,入学日和离校日。

我的CSV文件如下所示: Table of the Students

我已经从添加用户代码开始,但是此脚本将为该CSV文件中的每个人添加一个用户

#!/bin/bash

OLDIFS=$IFS
IFS=";"

while read firstname lastname
do
      useradd -c "${firstname} ${lastname}" -d /home/"${firstname}" -G group1 -s /bin/bash "${lastname}"
done < file.csv

现在,我必须对Bash脚本进行编码,以便它读取离开日期,将其与当前日期进行比较,如果离开日期在将来,则该脚本应使用Tablerow中的名称添加一个用户

下一部分是该脚本应停用每个已经离开的用户。并在4周后删除用户

我对bash还是很陌生,但是在Internet上找不到任何可用的东西。 对不起,我的英语不好。 ^^“

解决方法

一种选择是将所有内容包装在awk脚本中:

awk '{
       "date -d "gsub("\\.","-",$4)" +%s" | getline ldat;
       dat=strftime("%s");
       if (ldat>dat) 
                     { system("useradd -c \""$1\" \""$2\"" -d /home/"$1" -G group1 -s /bin/bash "$2) 
       } 
      }' file  

一个班轮:

awk '{"date -d "gsub("\\.",$5)" +%s" | getline ldat;dat=strftime("%s");if (ldat>dat) { system("useradd -c \""$1\" \""$2\"" -d /home/"$1" -G group1 -s /bin/bash "$2) } }' file

在名为file的文件中包含必需的数据后,我们将转换所有“。”。使用awk的gsub函数转换为“-”。然后,我们通过date命令运行此命令以获取纪元时间并将其读入变量ldat中。然后,我们使用awk的strftime函数获取今天日期的纪元日期格式。如果今天的日期小于请假日期,请使用awk的系统功能来添加用户。

然后可以扩展此逻辑以根据需要停用帐户

注意-在实际执行之前,请确保要与系统一起执行的命令符合预期。