【问题标题】:Creating Users by comparing 2 dates with Bash通过将 2 个日期与 Bash 进行比较来创建用户
【发布时间】:2021-02-21 09:55:16
【问题描述】:

我有一个包含学校学生的 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 脚本进行编码,以便它读取离开的日期,将其与当前日期进行比较,如果离开的日期在未来,那么脚本应该使用表格行中的名称添加一个用户。

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

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

【问题讨论】:

标签: linux bash csv scripting


【解决方案1】:

一种选择是将所有内容包装在 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

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

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

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

【讨论】:

  • 谢谢!我认为这看起来不错。我明天回来工作时会检查它是否有效,并将分享结果。 ^^
猜你喜欢
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多