任何人都可以帮我编写以下场景的脚本!!
注意: - 组名和文件系统完全相同。
帮助我编写脚本,当用户登录时,要识别的组名称并执行
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
我使用下面给出的脚本解决了我的问题: -
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
答案 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