Linux脚本最后一位用户添加了

时间:2015-01-16 13:49:15

标签: linux bash

我是Linux Scripting的新手并且坚持这个练习。 我需要找出当前用户是否是最后添加的用户。 如果没有,那么我需要显示最后添加的用户。

这是我的剧本:

#!/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.

我做错了什么?

2 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

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。 另外,不要忘记不在=

周围放置空格

答案 1 :(得分:0)

护理:/etc/passwd未排序!

如果添加了一些系统用户,则使用tail -n1 /etc/passwd可能会出错(对于安装新守护程序时的示例)。

对于示例,运行命令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 $1" >>/etc/flat_userfile
eoadd

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

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

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

完成后,每次添加或删除一个用户时,都会在/etc/flat_userfile中添加或删除一行。

我使用date代替echo来存储帐户创建日期。