まず、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>";