warning: Creating default object from empty value in /var/www/drupal-5.23/modules/taxonomy/taxonomy.module on line 1418.

Perl で、RADIUS クライアントを作る。

Radius サーバに接続するためには、そのホスト名とシークレットが必要である。シークレットは Radius サーバへのパスワードみたいなもの。以下のコードでは $r に Radius クライアントのオブジェクトが入り、その後で $USENAME と $PASSWORD を使って $HOST にアクセスしている。 使用するモジュール use Authen::Radius;
#!/usr/bin/perl

use Authen::Radius;

our $HOST     = '1.1.1.1';
our $USERNAME = 'perltips';
our $PASSWORD = 'password';
our $SECRET   = 'testing123';

# First Trial
$r = new Authen::Radius(Host   => $HOST,
                        Secret => $SECRET,
                        Debug  => 1,
                        TimeOut=> 10);

# 前座。ユーザー名とパスワードのチェックをしてみる。
print "auth result=", $r->check_pwd($USERNAME,
                                    $PASSWORD,
                                    $HOST), "\n";
# Authen::Radius->load_dictionary();

# 本番。ユーザー名とパスワードのチェックを設定する。
$r->add_attributes (
                { Name => 'UserName',       Value => $USERNAME },
                { Name => 'Password',       Value => $PASSWORD },
#               { Name => 'NAS-IP-Address', Value => '1.1.1.2' }
#
# RFC 2865 https://www.ietf.org/rfc/rfc2865.txt calls this attribute
# User-Password. Check your local RADIUS dictionary to find
);

# ユーザー名とパスワードの組み合わせ (アトリビュート:属性) を、ACCESS_REQUEST で送る。
# そうすると返事が返って来るので recv_packet で受け取る。
$r->send_packet(ACCESS_REQUEST) and $type = $r->recv_packet();
print "server response type = $type\n";

# サーバから送られてきたアトリビュートを表示してみる。
for $a ($r->get_attributes()) {
        print "attr: name=$a->{'Name'} value=$a->{'Value'}\n";
}
Radius サーバに接続するためには、そのホスト名とシークレットが必要である。シークレットは Radius サーバへのパスワードみたいなもの。以下のコードでは $r に Radius クライアントのオブジェクトが入り、その後で $USENAME と $PASSWORD を使って $HOST にアクセスしている。 使用するモジュール use Authen::Radius;
#!/usr/bin/perl

use Authen::Radius;

our $HOST     = '1.1.1.1';
our $USERNAME = 'perltips';
our $PASSWORD = 'password';
our $SECRET   = 'testing123';

# First Trial
$r = new Authen::Radius(Host   => $HOST,
                        Secret => $SECRET,
                        Debug  => 1,
                        TimeOut=> 10);

# 前座。ユーザー名とパスワードのチェックをしてみる。
print "auth result=", $r->check_pwd($USERNAME,
                                    $PASSWORD,
                                    $HOST), "\n";
# Authen::Radius->load_dictionary();

# 本番。ユーザー名とパスワードのチェックを設定する。
$r->add_attributes (
                { Name => 'UserName',       Value => $USERNAME },
                { Name => 'Password',       Value => $PASSWORD },
#               { Name => 'NAS-IP-Address', Value => '1.1.1.2' }
#
# RFC 2865 https://www.ietf.org/rfc/rfc2865.txt calls this attribute
# User-Password. Check your local RADIUS dictionary to find
);

# ユーザー名とパスワードの組み合わせ (アトリビュート:属性) を、ACCESS_REQUEST で送る。
# そうすると返事が返って来るので recv_packet で受け取る。
$r->send_packet(ACCESS_REQUEST) and $type = $r->recv_packet();
print "server response type = $type\n";

# サーバから送られてきたアトリビュートを表示してみる。
for $a ($r->get_attributes()) {
        print "attr: name=$a->{'Name'} value=$a->{'Value'}\n";
}

Linux で、ランレベル (Run Level) とは?

RedHat / Fedora 系の場合は、
0=停止
1=シングルユーザーモード
2=NFSを使用しないテキストログインモード(マルチユーザーモード)
3=テキストログインモード(マルチユーザーモード)
4=未使用?
5=GUIログインモード(マルチユーザーモード)
6=再起動
RedHat / Fedora 系の場合は、
0=停止
1=シングルユーザーモード
2=NFSを使用しないテキストログインモード(マルチユーザーモード)
3=テキストログインモード(マルチユーザーモード)
4=未使用?
5=GUIログインモード(マルチユーザーモード)
6=再起動

Perl で、サーバにインストールされているモジュールのバージョンをチェックする方法

例えば、モジュール CGI のバージョンを調べたい場合は、以下のようにする。
$ perl -MCGI -e 'print $CGI::VERSION'
例えば、モジュール CGI のバージョンを調べたい場合は、以下のようにする。
$ perl -MCGI -e 'print $CGI::VERSION'

Perl で、.htaccess のパスワードを生成する方法

Apache の場合の基本認証(BASIC 認証)、.htaccess の仕組みで使うパスワードは Perl で生成できる。 以下のコードを実行するとユーザー名「guest」に対するパスワード「password」は、毎回違った暗号文字列が出力されるが、それでも Apache はきちんと処理する。
#!/usr/bin/perl

our $id            = 'guest';
our $password      = 'password';
our $password_file = '.htpasswd';

# Perl の crypt 関数に使える SALT の文字は a~z、A~Z、0~9、「.」と「/」
my @salt = ('a'..'z','A'..'Z','0'..'9','.','/');

#乱数初期化関数は srand
srand;

# SALT を作る。
my $seed1 = int(rand(64));
my $seed2 = int(rand(64));
my $salt = $salt[$seed1] . $salt[$seed2];

# crypt 関数の仕様は crypt(テキスト, SALT)
$crypt_password = crypt($password, $salt);

# .htpasswd ファイルに書き出す。
open(OUT, ">$password_file") || die;
print OUT "$id:$crypt_password\n";
close(OUT);

# 表示してみる。
print "$id:$crypt_password\n";
1つのパスワードに対する暗号化された文字列の種類は 4,096通りある。これは、アルファベット小文字 26 通り+アルファベット大文字 26 通り+数字 10 通り+記号 2 通り=64 通りで、SALT は 2文字で構成されるため、64×64 = 4,096 通り、ということからくる。
Apache の場合の基本認証(BASIC 認証)、.htaccess の仕組みで使うパスワードは Perl で生成できる。 以下のコードを実行するとユーザー名「guest」に対するパスワード「password」は、毎回違った暗号文字列が出力されるが、それでも Apache はきちんと処理する。
#!/usr/bin/perl

our $id            = 'guest';
our $password      = 'password';
our $password_file = '.htpasswd';

# Perl の crypt 関数に使える SALT の文字は a~z、A~Z、0~9、「.」と「/」
my @salt = ('a'..'z','A'..'Z','0'..'9','.','/');

#乱数初期化関数は srand
srand;

# SALT を作る。
my $seed1 = int(rand(64));
my $seed2 = int(rand(64));
my $salt = $salt[$seed1] . $salt[$seed2];

# crypt 関数の仕様は crypt(テキスト, SALT)
$crypt_password = crypt($password, $salt);

# .htpasswd ファイルに書き出す。
open(OUT, ">$password_file") || die;
print OUT "$id:$crypt_password\n";
close(OUT);

# 表示してみる。
print "$id:$crypt_password\n";
1つのパスワードに対する暗号化された文字列の種類は 4,096通りある。これは、アルファベット小文字 26 通り+アルファベット大文字 26 通り+数字 10 通り+記号 2 通り=64 通りで、SALT は 2文字で構成されるため、64×64 = 4,096 通り、ということからくる。