Linux 通过与Bash比较2个日期来创建用户
我有一个CSV表格,里面有一所学校的学生,包括名字、姓氏、入学日期和离校日期 我的CSV文件如下所示: 我已经开始使用添加用户的代码,但是这个脚本将为这个CSV文件中的每个人添加一个用户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
#!/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的系统功能添加用户
然后可以根据需要扩展此逻辑以停用帐户
注意-在实际执行之前,确保系统要执行的命令与预期一致。谷歌是你的朋友:谢谢!我觉得那看起来不错。我明天回来工作时会检查它是否有效,并分享结果^^