I have the following perl issue:
I am running a script that is executed by my regular user. I need to “su” to other users throughout the execution of this script, which will require me to enter some information from the UNIX command line. When I “su”, I am prompted for the password, I enter the password, the password is accepted (& updates to the other user) but the scripts returns to the UNIX prompt rather than continuing with the remainder of the script.
Linux 4.1.2
Perl 5.8.8
What am I doing wrong here? Here is my code sample:
&Chg_User ($other_user); &Chg_Directory ($dir_location); … … … ## the sub_routines below sub Chg_User { my @chg_args = ("su”, “$_[0]"); my $chg_result = system(@chg_args); # updates to user but returns + to the UNIX command prompt print ("cOmMaNd LiNe \n"); #never gets here unless I type “exi +t” at the UNIX command prompt if ( $chg_result == -1) { print "wrong password: $!\n"; exit (-1); } } sub Chg_Directory { system (“cd”, “$_[0]”); }
In reply to system commands and returns by perl_zen
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |