Sponsored Content
Top Forums Shell Programming and Scripting shell script to check permission before copy over Post 302516390 by wanaka on Friday 22nd of April 2011 10:01:58 PM
Old 04-22-2011
shell script to check permission before copy over

Hi,

I am writing some shell script to check the file owner permission whether the write bit is turn on. If it is turn on it will copy the file to the destination else it will just prompt user to change the file and skipping it.

However, I am starting getting loss here as I have couple of issues that I am facing:
1. first the file could be using regular expression in the file for example file* or file?? which is usually handling pretty well if you are using cp command to handle but in script I will have to warn user to put quote.
2. My current script also have limitation that it cannot directory.

Is there any easier way of how the script to structure. For example, let say the user can just like what they did in typical cp command just run
Code:
script -s source -t target

and the script will check through the file owner permission and if it is directory it will check those file permission inside (we do not have to check directory permission).

The more I write my current script the more I find its limitation.

I always thought there should an easier way to just pass the script -s source -t target to cp -pr source target in an easier way.
Code:
#!/bin/bash

#version 1.0
#Revised Date: 10-Feb-2011

#Set this as your target filesystem
TGT="/tmp/dir2"

#Function call to check file owner write bit
#set -x
func_checkperm()
{
        BIT=`ls -l $f | sed -e 's/..\(.\).*/\1/'`
        case $BIT in
                -)
                echo "NO_WRITE"
                ;;
                w)
                echo "WRITE"
                ;;
        esac
}

if [ $# -eq 1 ]
then
        SRC="$1"

        if [ -d "$SRC" ]; then
        echo "This is a directory not a file, please specify a file"

        else

                for f in $SRC
                do
                CON_VALUE=$(func_checkperm "$f")
                case $CON_VALUE in
                        NO_WRITE)
                                echo "$f write permission bit is not set.  Please correct the permisson.  Skipping.."
                        ;;
                        WRITE)
                                cp -pr $f $TGT
                        ;;
                esac
                done
        fi

elif [ $# -gt 1 ]
then
        echo "Please enclose multiple input files or regular expression in quotes.  For example: <script.sh> \"inputsource*\" target"

elif [ "$1" = "" ]
then
        echo "The command usage is not correct"
fi


Last edited by Scott; 04-23-2011 at 02:24 AM.. Reason: Please use code tags
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

need shell script that checks your user id and your permission level

I just need the shell script that checks your user id and your permission level. I sort of have one to check the user id but I don't like it. Can anyone help with this? (3 Replies)
Discussion started by: yammer
3 Replies

2. Shell Programming and Scripting

Need a script to copy files and check

Hi all, I need a script in ksh: 1: Copy files from directory (A) to directory (B) 2: Check if files that will be copied in directory (A) have never been yet copied to (B) 3: Never copy the last created file of directory (A) This script will run on crontab. Thanks in advance for your... (1 Reply)
Discussion started by: Camaro
1 Replies

3. Shell Programming and Scripting

shell script to take input from a text file and perform check on each servers and copy files

HI all, I want to script where all the server names will be in a text file like server1 server2 server3 . and the script should take servernames from a text file and perform copy of files if the files are not present on those servers.after which it should take next servername till the end of... (0 Replies)
Discussion started by: joseph.dmello
0 Replies

4. Shell Programming and Scripting

shell script and Permission denied

Have the following in a .sh file. printf "Installing ... \ r" cd $ ORG_DIR / a_a . / configure> error.log Make 1> error.log 2> error.log make install> error.log But when I run I get the following. install.sh: line 270:. / configure: Permission denied make: *** No rule two make target... (3 Replies)
Discussion started by: Mumie
3 Replies

5. Shell Programming and Scripting

perl script to check read/write/execute permission for 'others'

I want to check access rights permissions not for 'user', not for 'group', but for 'others'. I want to do it by system command in which i want to use 'ls -l' and 'awk' command. I have written the following program : #!/usr/bin/local/perl #include <stdlib.h> system ("ls -l | awk... (1 Reply)
Discussion started by: shubhamsachdeva
1 Replies

6. Shell Programming and Scripting

Automation, Copy, File Status Check --> Script(s)

All, I have to write a script to do the following requirement. There is a file called BUSINESS_DATE.TXT. This file get updated once the oracle partition created. In Oracle, Partition will be created every day. There is a seperate script scheduled to take care ORACLE partition creation. The... (3 Replies)
Discussion started by: karthi_mrkg
3 Replies

7. Shell Programming and Scripting

Execute permission for shell script

Hi All, I am not able to figure out what is the problem with calling a shell script within a shell script. i have given all the permissions to both schell scripts. but when i am seeing the log file error is coming like weekly_us_push_rpts_tst.sh: ./vacation_quota_summary_detail.sh: Execute... (9 Replies)
Discussion started by: krupasindhu18
9 Replies

8. Shell Programming and Scripting

Shell script which will check the target file and folder exists and copy it

Hi All, I am a beginner in this and trying to write a shell script in linux which will : 1. Ask for a file name and check if its exists. 2. If file exists only then it will ask for the new target folder, after entering target folder name it will check if it exists. 3. If target folder... (3 Replies)
Discussion started by: ashish_neekhra
3 Replies

9. Shell Programming and Scripting

Permission denied running shell script in opensuse

Hello, I am having an odd problem in open suse 12. I have a shell script and when I try to run it, I get "permission denied" The permissions from ls -l are, -rw------- 1 user1 users 25904 Jan 10 16:26 script.sh I have tried to change the permissions in dolphin but this does not change the... (5 Replies)
Discussion started by: LMHmedchem
5 Replies

10. Shell Programming and Scripting

Script to check and copy column entries

Hi I have a text file (INPUT.TXT) of three columns assuming they are separated by tab. The format is given as: Column1 Column2 Column3 aaa NO aaa bbb YES asdf ccc YES yyasdf ddd NO ddd eee ... (3 Replies)
Discussion started by: my_Perl
3 Replies
FLOCK(1)							   User Commands							  FLOCK(1)

NAME
flock - manage locks from shell scripts SYNOPSIS
flock [options] <file|directory> <command> [command args] flock [options] <file|directory> -c <command> flock [options] <file descriptor number> DESCRIPTION
This utility manages flock(2) locks from within shell scripts or the command line. The first and second forms wrap the lock around the executing a command, in a manner similar to su(1) or newgrp(1). It locks a specified file or directory, which is created (assuming appropriate permissions), if it does not already exist. By default, if the lock cannot be immediately acquired, flock waits until the lock is available. The third form uses open file by file descriptor number. See examples how that can be used. OPTIONS
-s, --shared Obtain a shared lock, sometimes called a read lock. -x, -e, --exclusive Obtain an exclusive lock, sometimes called a write lock. This is the default. -u, --unlock Drop a lock. This is usually not required, since a lock is automatically dropped when the file is closed. However, it may be required in special cases, for example if the enclosed command group may have forked a background process which should not be hold- ing the lock. -n, --nb, --nonblock Fail rather than wait if the lock cannot be immediately acquired. See the -E option for the exit code used. -w, --wait, --timeout seconds Fail if the lock cannot be acquired within seconds. Decimal fractional values are allowed. See the -E option for the exit code used. -o, --close Close the file descriptor on which the lock is held before executing command . This is useful if command spawns a child process which should not be holding the lock. -E, --conflict-exit-code number The exit code used when the -n option is in use, and the conflicting lock exists, or the -w option is in use, and the timeout is reached. The default value is 1. -c, --command command Pass a single command, without arguments, to the shell with -c. -h, --help Print a help message. -V, --version Show version number and exit. EXAMPLES
shell1> flock /tmp -c cat shell2> flock -w .007 /tmp -c echo; /bin/echo $? Set exclusive lock to directory /tmp and the second command will fail. shell1> flock -s /tmp -c cat shell2> flock -s -w .007 /tmp -c echo; /bin/echo $? Set shared lock to directory /tmp and the second command will not fail. Notice that attempting to get exclusive lock with second command would fail. shell> flock -x local-lock-file echo 'a b c' Grab the exclusive lock "local-lock-file" before running echo with 'a b c'. ( flock -n 9 || exit 1 # ... commands executed under lock ... ) 9>/var/lock/mylockfile The form is convenient inside shell scripts. The mode used to open the file doesn't matter to flock; using > or >> allows the lock- file to be created if it does not already exist, however, write permission is required. Using < requires that the file already exists but only read permission is required. [ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -en "$0" "$0" "$@" || : This is useful boilerplate code for shell scripts. Put it at the top of the shell script you want to lock and it'll automatically lock itself on the first run. If the env var $FLOCKER is not set to the shell script that is being run, then execute flock and grab an exclusive non-blocking lock (using the script itself as the lock file) before re-execing itself with the right arguments. It also sets the FLOCKER env var to the right value so it doesn't run again. EXIT STATUS
The command uses sysexits.h return values for everything else but an options -n or -w failures which return either the value given by the -E option, or 1 by default. AUTHOR
H. Peter Anvin <hpa@zytor.com> COPYRIGHT
Copyright (C) 2003-2006 H. Peter Anvin. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICU- LAR PURPOSE. SEE ALSO
flock(2) AVAILABILITY
The flock command is part of the util-linux package and is available from Linux Kernel Archive <ftp://ftp.kernel.org/pub/linux/utils/util- linux/>. util-linux September 2011 FLOCK(1)
All times are GMT -4. The time now is 06:30 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy