linux - 任何人都可以帮我为以下场景编写脚本吗

标签 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“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”找到

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

/文件系统/组

  • usere 属于 groupe,并且 usere 可以访问“/filesystem/groupe”文件系统

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

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

最佳答案

有一种更简单的方法可以测试用户是否是 bash 中的 group{a..z} 的成员。 (注意:这是仅 bash 的解决方案,因为它使用 [[ 构造和 =~ 运算符)。使用 id -Gn 还可以处理 group{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

关于linux - 任何人都可以帮我为以下场景编写脚本吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29941725/

相关文章:

powershell - 观察本地文件夹的变化并将它们上传到 SFTP 服务器

Python脚本将编译但不会在maya中执行任何操作

bash - 检查 bash 中是否至少存在一个文件

linux - bash 根据另一个命令的输出替换部分命令的输出

c++ - 如何在 Linux 中使用 C++ 库读取 html?

linux - 如何使用 sed 复制十六进制格式的行?

c - 获取无线OCB模式下接收包的信号强度

regex - Linux 用包含双引号的变量替换

linux - bash 脚本中的参数数量

linux - 无法使用 Linux 在 chrome 上执行 nightwatch 测试