Article 6972 of comp.lang.perl: Xref: feenix.metronet.com comp.lang.perl:6972 Newsgroups: comp.lang.perl Path: feenix.metronet.com!news.ecn.bgu.edu!usenet.ins.cwru.edu!howland.reston.ans.net!paladin.american.edu!europa.eng.gtefsd.com!uunet!math.fu-berlin.de!informatik.tu-muenchen.de!lrz-muenchen.de!informatik.uni-muenchen.de!user@cis.uni-muenchen.de!max From: max@cis.uni-muenchen.de (Max Hadersbeck) Subject: Develop DISPLAY Variable for X at login time. Message-ID: Sender: max@user@cis.uni-muenchen.de (Max Hadersbeck) Date: Tue, 19 Oct 1993 10:27:56 GMT Reply-To: max@cis.uni-muenchen.de Organization: CIS, University of Munich X-Newsreader: mxrn 6.18-4 Keywords: DISPLAY Variable X- Windows Lines: 81 Hi Here is a program, which I find very useful in a login procedure. If you log into a machine you must set your display variable to your host and screen. The output of who truncates your machinename. So use this script. MAX --------------------------------- cut here : #!/bin/perl # title : getXdisplayvar.pl # author : #---------------------------------------------------------------------- #Maximilian Hadersbeck | Wagmuellerstr. 23 | Phone: +49 89 2110672 #CIS | D-80538 M"unchen | Fax: +49 89 2110674 #University of Munich | Germany | max@cis.uni-muenchen.de #---------------------------------------------------------------------- # Version : 1.0 # This program gets the right host and display-name for your DISPLAY # variable. This is very usefull in a login script, # if you connect to a remote machine # # get user name and terminal number : $iam=`whoami`; chop $iam; $termid=`tty`; $termid=~ s/\/dev\///; chop $termid; # get hostname extract open(WHOFILE,"who |"); while () { ($name,$term,$mon,$day,$time,$host_split) = split(' ',$_); if ( length $host_split && $name eq $iam && $term eq $termid) { $host = $host_split; last; }; }; close (WHOFILE); if ( $host =~ /\./ ) { if ( ! $host =~ /0/) { ($hostx,$rest) = split(/\./,$host,2); chop $hostx; $hostx =~ s/\(//; }; if ($host =~ /0/) { $hostx = `hostname`; chop $hostx; }; } else { $hostx = $host; $hostx =~ s/^\((.*)\)$/$1/; }; print "You come from the host : $hostx \n"; $host_from = &name_to_address($hostx); print "Your IP-number and display is $host_from:0.0\n"; sub name_to_address { local ($name) = shift (@_); local (@octets); local ($nam, $aliases, $addrtype, $length, $address) = gethostbyname ($name); if (! length ($address)) { die "$prog: no address found for $name\n"; } @octets = unpack ("CCCC", $address); join ('.', @octets[0..3]); } .