http://qs321.pair.com?node_id=940794


in reply to system commands and returns

Split your script into two. One part is the launcher and the other is the code to run under the second user. Use something like this:
system("su -c ./script2.pl");

Update: By the way, your sub Chg_Directory suffers from a similar problem, it will only change the directory of the child process. Use chdir.

Replies are listed 'Best First'.
Re^2: system commands and returns
by perl_zen (Initiate) on Nov 30, 2011 at 14:55 UTC

    @cdarke

    I will test this out after a morning meeting and give an update on success or failure later today.

    BTW, I noticed that problem with  sub Chg_Directory last night while attempting more testing.

      @cdarke

      This worked and thank you. I had to make two small changes (noted in the code below) but I have success.

      The first change was enclosing the script execution command in single quotes and the second was adding perl to the command call.

      The end result is two perl scripts.

      The orignal script (with updates)

      &Chg_User ($other_user); #&Chg_Directory ($dir_location); … … … ## the sub_routines below sub Chg_User { #system("su -c ./script2.pl"); #from cdarke system("su -c 'perl script2.pl'"); #with changes #if ( $chg_result == -1) { # print "wrong password: $!\n"; # exit (-1); #} } sub Chg_Directory { system (“cd”, “$_[0]”); }

      and script2.pl (with the script for the "other_user" shell)

      print ("Not the cOmMaNd LiNe from script2 \n");

      I would like to get the IPC::ShellCmd package to see if this will eliminate the need of a second script file; however, this takes care of my needs for the day and moves me closer to my goal

      Thanks to all of you.