微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决通过将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的系统功能来添加用户。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。