Solved

Why does su cause my script to return "not found"  -- 250 points

Posted on 2003-11-10
4
383 Views
Last Modified: 2010-04-21
When I include su in the script below (see line 6) it ceases to return data.  Instead, it returns 'not found' for every line in the driver file (homelist.$$).  homelist contains a list of home directories across over 20 servers.  My intention is to run the script as root, have it su to each user listed in the driver file, automount the user's home directory, and grab data from some application log files.

When I run the script as me, it does exactly what I expect but is unable to access those homes where the user has restricted access.  When I run this as root and include the su command the script does not behave well.  

250 points.



v_rundir=`pwd`
 
 cat $v_rundir/homelist.3968 | while read v_home
   do
     echo "the current user account is $v_home"
     su  $v_home
     if [ -d /home/$v_home/.graphon/session-logs ]
     then
          v_log=`ls -tr /home/$v_home/.graphon/session-logs/goglobal*.* | tail -1 | cut -d/ -f6`
          echo ====================================================================
          echo "the log file is $v_log"
          v_build=`(grep "client build" /home/$v_home/.graphon/session-logs/$v_log)`
          v_build=`echo $v_build |awk '{split($0,FIELD, " "); print FIELD[4] } ' `
          echo "the build is: $v_build"
          echo "user: $v_home  build: $v_build"
          echo ====================================================================
        
        
          #------------------------------------------------------------------------
          #Now, appent to the final report
          #------------------------------------------------------------------------
        
          echo "user: $v_home      build: $v_build" >> $v_rundir/ggversions.$v_month-$v_day-$v_time
 
          #------------------------------------------------------------------------
          #Now, remove the listing of home directories; it is no longer needed.
          #------------------------------------------------------------------------
        
                   
    else  echo "Not a graphon user"
            
    fi
   
   done
0
Comment
Question by:jrtanenb
  • 2
4 Comments
 
LVL 48

Accepted Solution

by:
Tintin earned 250 total points
ID: 9718365
The 'su' forks another process.

What you need is a 'su $v_home -c [command to run]'

Where 'command to run' is a script containing the automount and copy stuff you want to do as the user.
0
 
LVL 1

Expert Comment

by:Topace
ID: 9720023
You might be able to just use sudo as well.

i.e.:

sudo 'command to execute'

This will essentially prompt you for the password ONCE, then sudo will save it for a little while (I think it's like 5 minutes), and during that time, you won't be asked for the password again.

~ace
0
 
LVL 48

Expert Comment

by:Tintin
ID: 9720485
With the recent versions of sudo, you can use the NOPASSWD directive if you don't want users to type in a password.
0
 

Author Comment

by:jrtanenb
ID: 9722364
Thank you both (Topace, Tintin) !!!

I love having the resource to get advice from people who are a lot more informed (or maybe just more intelligent) than I.  

I am going to give sudo a whirl, also.  
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Attention: This article will no longer be maintained. If you have any questions, please feel free to mail me. jgh@FreeBSD.org Please see http://www.freebsd.org/doc/en_US.ISO8859-1/articles/freebsd-update-server/ for the updated article. It is avail…
When you do backups in the Solaris Operating System, the file system must be inactive. Otherwise, the output may be inconsistent. A file system is inactive when it's unmounted or it's write-locked by the operating system. Although the fssnap utility…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…

861 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now