Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

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

Posted on 2003-11-10
4
Medium Priority
?
395 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 1000 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

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Hello fellow BSD lovers, I've created a patch process for patching openjdk6 for BSD (FreeBSD specifically), although I tried to keep all BSD versions in mind when creating my patch. Welcome to OpenJDK6 on BSD First let me start with a little …
This tech tip describes how to install the Solaris Operating System from a tape backup that was created using the Solaris flash archive utility. I have used this procedure on the Solaris 8 and 9 OS, and it shoudl also work well on the Solaris 10 rel…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

773 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