Solved

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

Posted on 2003-11-10
4
382 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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
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 Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Suggested Solutions

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…
I have been running these systems for a few years now and I am just very happy with them.   I just wanted to share the manual that I have created for upgrades and other things.  Oooh yes! FreeBSD makes me happy (as a server), no maintenance and I al…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
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.

763 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

14 Experts available now in Live!

Get 1:1 Help Now