Linux 通过与Bash比较2个日期来创建用户

Linux 通过与Bash比较2个日期来创建用户,linux,bash,csv,scripting,Linux,Bash,Csv,Scripting,我有一个CSV表格,里面有一所学校的学生,包括名字、姓氏、入学日期和离校日期 我的CSV文件如下所示: 我已经开始使用添加用户的代码,但是这个脚本将为这个CSV文件中的每个人添加一个用户 #!/bin/bash OLDIFS=$IFS IFS=";" while read firstname lastname do useradd -c "${firstname} ${lastname}" -d /home/"${firstna

我有一个CSV表格,里面有一所学校的学生,包括名字、姓氏、入学日期和离校日期

我的CSV文件如下所示:

我已经开始使用添加用户的代码,但是这个脚本将为这个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
#/bin/bash
OLDIFS=$IFS
IFS=“;”
当读取firstname lastname时
做
useradd-c“${firstname}${lastname}”-d/home/“${firstname}”-G group1-s/bin/bash“${lastname}”
完成
现在我必须对Bash脚本进行编码,以便它读取离开的日期,将其与当前日期进行比较,如果离开的日期是在将来,那么脚本应该使用Tablerow中的名称添加一个用户

下一部分是脚本应该停用每个离开日期已经过去的用户。4周后,用户应被删除

我是bash的新手,在互联网上找不到任何有用的东西。
对不起,我的英语不好^^“

一个选项是将所有内容包装在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的系统功能添加用户

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


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

谷歌是你的朋友:谢谢!我觉得那看起来不错。我明天回来工作时会检查它是否有效,并分享结果^^