Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Why does getlogin always return same user name?

by zBernie (Novice)
on Jun 02, 2013 at 14:06 UTC ( #1036588=perlquestion: print w/replies, xml ) Need Help??

zBernie has asked for the wisdom of the Perl Monks concerning the following question:

We use a widely available perl script named "activity mail" to send email to developers who commit file to our cvs repository. The script sends a diff attachment with the email. The file name of the attachment is created like this:

filename=$user-@gm5,4,3,2,1,0-diff.txt

The problem is, regardless of who commits files, the $user is ALWAYS "bernie", which is my username on the cvs server. I found that the perl getlogin function always returns "bernie", regardless of who commits files:

my $user = getlogin || getpwuid($<) || "unknown";

I bit more research, and I found that get login returns the user name associated with the controlling terminal. But is a remote CentOS 5.5 server. So why does getlogin think that "bernie" is logged into the controlling terminal on this remote server? -Thanks

  • Comment on Why does getlogin always return same user name?

Replies are listed 'Best First'.
Re: Why does getlogin always return same user name?
by Anneq (Vicar) on Jun 02, 2013 at 14:53 UTC

    I use GIT, not CVS, so I'm not sure if this will be of help to you.

    On looking at the CVS manual online, I found the history command which gives status of files and users.

    As well, there are CPAN modules that deal with CVS. Perhaps the work is already done for you.

    Anne

Re: Why does getlogin always return same user name?
by Anonymous Monk on Jun 03, 2013 at 05:15 UTC

    So why does getlogin think that "bernie" is logged into the controlling terminal on this remote server?

    Because getlogin thinks so? Because your server is setup so the program runs under "bernie"?

      It occurred to me that cvs might be running as "bernie", but I can find nothing which would execute /usr/bin/cvs as "bernie". I checked file ownerships, setuid, /etc/pam.d, etc.

      Even stranger getpwuid($<) returns the correct UID, and so does $ENV{USER}. I added a statemt to print to a log below, which produces output like this:

      user = bartonbf, pwuid = john01, ENV{USER} = john01

      sub attach { boundary(@_); # Get the date (UTC). my @gm = gmtime; $gm[5] += 1900; $gm[4] += 1; # Get the username. my $user = getlogin || getpwuid($<) || "unknown"; my $pwuid = getpwuid($<); open LOG, ">>/tmp/bblog"; print LOG "user = $user, pwuid = $pwuid, ENV{USER} = $ENV{USER}\n"; close LOG; # Return the attachment headers. local $" = ''; return qq{ --$opt_a Content-Disposition: attachment; filename=$user-@gm[5,4,3,2,1,0]-diff. +txt Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=$opt_C }; }

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1036588]
Approved by shmem
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2020-07-07 12:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?