Linux 脚本最后添加的用户

Linux scripting last user added

我是 Linux 脚本编写的新手,在这个练习中遇到了困难。 我需要查明当前用户是否是最后添加的用户。 如果没有,那么我需要显示最后添加的用户。

这是我的脚本:

#!/bin/bash --

lastUser ='tail -1 /etc/passwd | cut -d: -f1'

if [[ $lastUser -ne $USER ]]; then
      echo "I am $USER and I am not the last added user."
      echo "The last added user is $lastUser."
else
      echo "I am $USER and I am the last added user."
fi

我得到的错误:line 3: lastUser: command not found.

我做错了什么?

这应该可以解决问题:

lastUser=$(tail -1 /etc/passwd | cut -d: -f1)

if [ "$lastUser" != "$USER" ]; then
    echo "I am $USER and I am not the last added user."
    echo "The last added user is $lastUser."
else
    echo "I am $USER and I am the last added user."
fi

lastUser 是您提供的代码中的一个字符串,它没有执行 cmd 。 另外,不要忘记不要在 =

周围放置空格

注意:/etc/passwd未排序!

如果添加了一些 系统用户,使用 tail -n1 /etc/passwd 可能会出现错误(例如安装新的 daemon)。

例如,运行 命令 pwck -s 将按 UID 对您的 /etc/passwd 文件进行排序。

但是由于删除用户的UID可以重新分配给新用户,这种方式不是很好...

您可以考虑这个 脚本:

#!/bin/bash
uid=0 unam=root
last=65000
[ -f /etc/adduser.conf ] && last=$(
    . /etc/adduser.conf
    echo $LAST_UID
)

while IFS=: read cunam foo cuid foo;do
    [ $cuid -gt $uid ] &&
        [ $cuid -le $last ] &&
        uid=$cuid unam=$cunam
  done </etc/passwd

if [[ $uid -ne $UID ]]; then
    echo "I am '$USER' and I am not the last added user."
    echo "The last added user is user #$uid: '$unam'."
  else
    echo "I am $USER and I am the last added user."
  fi

我的回答:

由于这种请求(知道谁是最后创建的用户)不是常见的(支持的)请求,您可以添加自己的规则:

sudo tee >/dev/null /usr/local/sbin/adduser.local <<"eoadd"
#!/bin/sh

date +"%s " >>/etc/flat_userfile
eoadd

sudo tee >/dev/null /usr/local/sbin/deluser.local <<"eodel"
#!/bin/sh

sed -e "/ $/d" -i /etc/flat_userfile
eodel

sudo chmod +x /usr/local/sbin/{add,del}user.local

完成后,每次添加或删除一个用户,都会添加或删除一行in/from /etc/flat_userfile.

我使用 date 而不是 echo 来存储帐户创建日期。