
Я хотел бы создать скрипт, который вывел бы список всех владельцев всех подкаталогов, а затем проверил бы каждый идентификатор, есть ли у меня доступ к sesu к этим идентификаторам.
**$**ls -lrth /apps/wldomains | grep '^d' | awk '{ print $3 }'
userid1
userid2
userid3
userid4
.
.
.
**$**sesu - userid1
Please enter your password:
**userid1@SERVER:$**sesu - userid2
Please enter your password:
**userid2@SERVER:$**sesu - userid3
.
.
.
.
решение1
используйте функцию printf в awk, затем передайте ее в ksh.
ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'
должен генерировать
sesu userid1
sesu userid2
sesu userid3
sesu userid4
просто добавьте | ksh
, когда ОК
ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'| ksh
- Я также уплотнил
grep | awk
вawk
решение2
find /apps/wldomains -type d -exec stat -c %U {} \; | sort -u | xargs -n 1 sesu -
find /apps/wldomains -type d
найдет все каталоги в нем/apps/wldomains
(включая/apps/wldomains
себя).stat -c %U
выведет имя пользователя владельца найденного каталога.sort -u
возьмет эти имена пользователей и отсортирует их в список отдельных имен пользователей.xargs -n 1 sesu -
возьмем этот список и выполнимsesu -
для каждого из них.
В Solaris установите пакет GNU coreutils и используйте gstat
его вместо stat
.