Posts Tagged ‘scripting’

Bash Script 1.1



set -e
set -u


function list_src_dirs {

find $_SRC_ROOT -type d -printf ‘%m\t%u\t%g\t%p\n’ 2>/dev/null | \
sed  ‘/\/__/d; /RCS$/d’


# Adding a second function to filter group and permissions

function list_src_dirs_perm_err {

list_src_dirs | sed -nr ‘/\t(source|sys)\t/p’ | sed -r ‘/^277[05]/d’ | sort -k 2



Now we are using the first function (function list_src_dirs) in the next function list_src_dirs_perm_err, getting further into the output we actually need.

sed -nr ‘/\t(source|sys)\t/p’ (-n output the following filter -r extended sed) this line prints the lines which have source or sys as the group (word preceeded with a tab)

sed -r ‘/^277[05]/d’ – excludes the following numbers that start from the beginning of the line (^) 2770 or 2775, this is looking at the permissions octal output. Worth remembering that sed looks at the whole line as the output.

sort -k 2 – sorts the second key (second column) which in this case is the username, making the output in alphabetical order.


Bash Script 1.0

Ive started to learn bash scripting and have decided to document it on my blog. Its mainly for my reference but I guess it could also be useful for other beginners. Im not doing anything fancy so dont judge đŸ™‚

The idea behind the script is to run on redhat source directories/files to identify which have the wrong user/group permissions and which files are checked out for longer than expected.

Ill put all the explanations in red so they are easy to read, they are currently not part of the script.



set -e #If an error occurs, the script will stop)
set -u #reports if there are any undefined variables)

# Define the variable for the search directory


# Define a function to find the correct directories

function list_src_dirs {

find $_SRC_ROOT -type d -printf ‘%m\t%u\t%g\t%p\n’ 2>/dev/null | \
sed  ‘/\/__/d; /RCS$/d’



Explanation of the find command

type d (find directories only)

printf (prints to the screen)

%mDisplays permissions in octal format
%uDisplays owners username
%gDisplays group name
%pDisplays filename
\ttab between columns

2>/dev/null (sends any error messages to /dev/null, running the script without this we see the permission denied entries to the directories we cannot access)

sed  ‘/\/__/d; /RCS$/d’ (ignores directories starting __ and ending /RCS)

Enclose sed regular expressions in /
/d = delete from the output (/p will print to the screen)