2

私はWebプログラミングの初心者で、基本的に2つの結果を出力する小さなシェルスクリプトを持っています。基本的には、ディレクトリでユーザーを見つけることです。

#!/bin/bash
echo -n "Please enter username to lookup: "
read USERNAME
DISPLAYNAME=`ldapsearch -p xxx -LLL -x -w test -h abc.com -D abc -b dc=abc,dc=com sAMAccountName=$USERNAME | grep displayName`

if [ -z "$DISPLAYNAME" ]; then
  echo "No entry found for $USERNAME"
else 
  echo "Entry found for $USERNAME"
fi

ブラウザに結果を表示できる perl Web コードを探しています。

ここで質問しすぎてしまうことはわかっていますが、これを達成するための正しい方向性を誰かに教えていただければ幸いです。

ありがとう!

4

1 に答える 1

1

まず、BASH スクリプトでは使用しないでください。現在のユーザー名を含む BASH 変数です。実際、BASH で UPPERCASE 変数を使用することは、一般的にはお勧めできません。ほとんどの BASH 環境変数は大文字であるため、混乱を招く可能性があります。変数を小文字にすることをお勧めします。$USERNAME$USERNAME

また、HTMLフォームを使用してこれを行いたいと思うので、STDINからBASHを読み取ることはできません。ツアー スクリプトを変更して、ユーザー名を引数として受け取ります。

バッシュ:

#!/bin/bash
user=$1;
DISPLAYNAME=`ldapsearch -p xxx -LLL -x -w test -h abc.com -D abc -b dc=abc,dc=com sAMAccountName=$user | grep displayName`
if [ -z "$DISPLAYNAME" ]; then
  echo "No entry found for $user"
else 
  echo "Entry found for $user"
fi

パール:

#!/usr/bin/perl
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser); 
use strict;
use warnings;
## Create a new CGI object
my $cgi = new CGI;
## Collect the value of 'user_name' submitted by the webpage
my $name=$cgi->param('user_name');

## Run a system command, your display_name.sh,
## and save the result in $result
my $result=`./display_name.sh $name`;

## Print the HTML header
print header;
## Print the result
print "$result<BR>";

HTML:

<html>
<body>
<form ACTION="./cgi-bin/display_name.pl" METHOD="post">
<INPUT TYPE="submit" VALUE="Submit"></a>
<INPUT TYPE="text" NAME="user_name"></a>
</form>
</body>
</html>

これはあなたが必要とすることをするはずです。./cgi-bin/両方のスクリプトが Web ページのディレクトリにあり、display_name.sh および display_name.pl と呼ばれることを前提としています。また、パーミッションが正しく設定されていることも前提としています (apache2 のユーザー www-data によって実行可能である必要があります)。最後に、./cgi-bin でスクリプトの実行を許可するように apache2 を設定していることを前提としています。

BASH を使用したい特定の理由はありますか? Perl スクリプトからすべてを直接行うことができます。

#!/usr/bin/perl
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser); 
use strict;
use warnings;
## Create a new CGI object
my $cgi = new CGI;
## Collect the value of 'name' submitted by the webpage
my $name=$cgi->param('user_name');

## Run the ldapsearch system command
## and save the result in $result
my $result=`ldapsearch -p xxx -LLL -x -w test -h abc.com -D abc -b dc=abc,dc=com sAMAccountName=$name | grep displayName`;

## Print the HTML header
print header;
## Print the result
$result ? 
      print "Entry found for $name<BR>" : 
      print "No entry found for $name<BR>";
于 2012-09-26T13:13:05.150 に答える