このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

Perlでfinger...

発言者:大分県 安東
( Date Friday, March 07, 1997 18:59:29 )


ども。

Perlでfingerしたいのですが、どなたかアドバイスをお願いします。
(smtpみたいにモジュールはないのかなあ)

#!/usr/local/bin/perl

require 'chat2.pl';

$server_address = "160.199.8.40";
$port_number = 79;

&chat'open_port($server_address,$port_number);

&chat'print("1",'ando');

$_ = &chat'expect(10,'.','$&');

print $_;

&chat'close("1");

松尾 光 さんからのコメント
( Sunday, November 23, 1997 07:15:33 )

こんなかんじではどう?

        #!/usr/local/bin/perl
        &parse_form_data(*simple);
        $user = $simple{'user'};
        print "Content-type: text/plain", "\n\n";
        print "Here are the results of your query: "\n";
        print '/usr/local/bin/finger $user';
        print "\n";
        exit (0);

        sub parse_form_data
        {
                local(*FORM_DATA) = @_;
                local( $request_method, $query_string, @key_value_pairs,
                        $key_value, $key, $value);
                $request_method = $ENV('REQUEST_METHOD');

                if ($request_method eg "GET") {
                        $query_string = $ENV{'QUERY_STRING'};
               } elsif ($request_method eg "POST") {
                        $query_string = $ENV{'CONTENT_LENGTH'};
               } else {
                        &return_error (500, "Server Error',
                                            "Server uses unsupported method");
               }

              @key_value_pairs = split (/&/, $query_string);

              foreach $key_value (@key_value_pairs) {
                ($key, $value) = split (/=/, $key_value);
                $value =~ tr/+/ /;
                $value =~ s/%([\dA-Fa-f][\dA-Fa-f])/pack ("C", hex ($1))/eg;
                if (defined($FORM_DATA{$key})) {
                        $FORM_DATA{$key} = join("\0", $FORM_DATA{$key}, $value);
                } else {
                        $FORM_DATA{$key} = $value;
               }
        }

        sub return_error
        {
                local($status, $keyword, $message) =@_;
                print "Content-type: text/html", "\n";
                print "Status: ", $status, " ", $keyword, "\n\n";
                print << End_of_Error;
        <title>Unexpected Error!</title>
        <h1>$keyword</h1>
        <hr>$message</hr>
        Please contact $webmater for more information.

        End_of_Error

        exit(1);
        }