任何人都可以帮我编写以下场景的脚本

时间:2015-04-29 10:59:14

标签: linux bash scripting

任何人都可以帮我编写以下场景的脚本!!

  • usera属于groupa,usera可以访问" groupa"文件系统
  • userb属于groupb,userb可以访问" groupb"文件系统
  • userc属于groupc,userc可以访问" groupc"文件系统
  • userd属于groupd,userd可以访问" groupd"文件系统

注意: - 组名和文件系统完全相同。

帮助我编写脚本,当用户登录时,要识别的组名称并执行

df -h */group_name*

例如: - 如果usera登录,那么我们需要o / p of" df -h / groupa"

[root@server5 ~]# df -h /groupa
Filesystem            Size  Used Avail Use% Mounted on
/dev/groupa             601T  477T  125T  80% /groupa
[root@server5 ~]#

需要通过放置一些逻辑来编写写入,每次用户登录系统时,此脚本需要在他/她的终端上运行并生成输出。我们正在尝试向用户提供有关其文件系统利用率的信息。这可以通过将此脚本放在/etc/profile.d/目录中来完成。用户信息可以从$ USER变量获取,组信息可以通过" id -gn"

找到

注意: - 某些文件系统如下所示。

/文件系统/ GROUPE

  • usere属于groupe,usere可以访问" / filesystem / groupe" filesystem

我使用下面给出的脚本解决了我的问题: -

grp=$(id -gn)
if [ "$grp" == "groupa" ]
then
    df -h /groupa
else
    if [ "$grp" == "groupb" ]
    then
        df -h /groupb
    else
        if [ "$grp" == "groupc" ]
        then
            df -h /groupc
        else
            if [ "$grp" == "groupd" ]
            then
                df -h /groupd
            else
                if [ "$grp" == "groupe" ]
                then
                    df -h /filesystem/groupe
                fi
            fi
        fi
    fi
fi

1 个答案:

答案 0 :(得分:1)

有一种更简单的方法可以测试用户是否是bash中组{a..z} 的成员。 (注意:这是一个仅限bash的解决方案,因为它使用[[构造和=~运算符)。使用id -Gn还会处理群组{a..z} 不是用户的主要组的情况,否则会导致基于搜索在id -gn上失败:

#!/bin/bash

grps=$(id -Gn)              ## return a list of groups of which user is a member

for i in group{a..z}; do    ## for i in groupa, groupb, groupc, ..., groupz

    ## test if groupX is in the list $umg
    #  on match get disk usage of /groupX
    [[ $grps =~ $i ]] && du -hs /$i

done