ユーザー定義のスクリプトにパラメータとして渡される資格証明は、入力ストリームとして使用できます。この章には、スクリプトのコード・サンプルが含まれています。サンプル・コードで使用されるBashシェル・スクリプト、PerlスクリプトおよびPythonスクリプト言語は、資格証明パラメータの抽出方法を示します。
|
注意: この章のスクリプトはサンプルのみです。環境に応じて変更および適用する必要があります。たとえば、Oracle Site Guardからスクリプトに渡された資格証明の数は、スクリプトの要件と完全に一致する必要があります。 |
#!/bin/bash
all_users=
all_passwords=
no_of_users=
no_of_passwords=
get_user_name() {
local index=$(expr $1)
if [ "$no_of_users" -lt $index ]; then
echo ""
else
echo $(echo "$all_users" | awk -v userNameIndex="$index" -F'<<SiteGuard_User>>' '{print $userNameIndex}')
fi
}
get_password() {
local index=$(expr $1)
if [ "$no_of_passwords" -lt $index ]; then
echo ""
else
echo $(echo "$all_passwords" | awk -v passwordIndex="$index" -F'<<SiteGuard_Password>>' '{print $passwordIndex}')
fi
}
load_credentials() {
read -s all_credentials
all_users=$(echo "${all_credentials}" | awk -F'<<SiteGuard_Credentials>>' '{print $1}')
all_passwords=$(echo "${all_credentials}" | awk -F'<<SiteGuard_Credentials>>' '{print $2}')
no_of_users=$(expr $(echo "$all_users" | awk -F'<<SiteGuard_User>>' '{print NF}'))
no_of_passwords=$(expr $(echo "$all_passwords" | awk -F'<<SiteGuard_Password>>' '{print NF}'))
if [ "$no_of_users" -ne "$no_of_passwords" ]; then
echo "INFO: Total no. of users : '$no_of_users'"
echo "INFO: Total no. of passwords : '$no_of_passwords'"
echo "ERROR: Number of User Names and number of Passwords do not match"
exit 1
else
echo "Total of '$no_of_users' credentials found"
fi
}
load_credentials
userName=$(get_user_name '1')
password=$(get_password '1')
echo "[1] UserName : '$userName', Password : '$password'"
userName=$(get_user_name '2')
password=$(get_password '2')
echo "[2] UserName : '$userName', Password : '$password'"
userName=$(get_user_name '3')
password=$(get_password '3')
echo "[3] UserName : '$userName', Password : '$password'"
userName=$(get_user_name '4')
password=$(get_password '4')
echo "[4] UserName : '$userName', Password : '$password'"
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
class SiteGuardCredentialUtil(object):
userNames = passwords = ''
noOfUsers = noOfPasswords = 0
credentialNotSet = False
def __init__(self):
credentialsIO = sys.stdin.readlines()[0]
if credentialsIO :
credentials = credentialsIO.split('<<SiteGuard_Credentials>>')
self.userNames = credentials[0].split('<<SiteGuard_User>>')
self.passwords = credentials[1].split('<<SiteGuard_Password>>')
self.noOfUsers = len(self.userNames)
self.noOfPasswords = len(self.passwords)
self.credentialNotSet = True
if self.noOfUsers != self.noOfPasswords :
print("INFO: Total no. of users : '%s'"%self.noOfUsers)
print("INFO: Total no. of passwords : '%s'"%self.noOfPasswords)
print('ERROR: Number of User Names and number of Passwords do not match')
sys.exit(1)
else :
print("INFO: Total of '%s' credentials found"%self.noOfUsers)
def getCredential(self, credentail):
if self.credentialNotSet :
if self.noOfUsers < int(credentail) :
print("ERROR: Credential not found at index '%s'"%credentail)
sys.exit(1)
else :
credentialIndex = credentail - 1;
return self.userNames[credentialIndex], self.passwords[credentialIndex]
else :
print('WARNING: SiteGuard Credentials not set')
return '', ''
def main():
sgUtil = SiteGuardCredentialUtil()
myUser, myPassword = sgUtil.getCredential(1)
print("[1] UserName : '"+ myUser + "', Password : '" + myPassword + "'")
myUser, myPassword = sgUtil.getCredential(2)
print("[2] UserName : '"+ myUser + "', Password : '" + myPassword + "'")
myUser, myPassword = sgUtil.getCredential(3)
print("[3] UserName : '"+ myUser + "', Password : '" + myPassword + "'")
myUser, myPassword = sgUtil.getCredential(4)
print("[4] UserName : '"+ myUser + "', Password : '" + myPassword + "'")
"""
Starting point...
"""
main()
#!/usr/local/bin/perl
use strict;
use warnings;
our @ALL_USERS = undef;
our @ALL_PASSWORDS = undef;
our $NO_OF_USERS = 0;
our $NO_OF_PASSWORDS = 0;
my $CREDENTIALS = <STDIN>;
load_credentials($CREDENTIALS);
my $userId1 = get_user_name(1);
my $password1 = get_password(1);
print_msg("[1] UserName : '$userId1', Password : '$password1'");
my $userId2 = get_user_name(2);
my $password2 = get_password(2);
print_msg("[2] UserName : '$userId2', Password : '$password2'");
my $userId3 = get_user_name(3);
my $password3 = get_password(3);
print_msg("[3] UserName : '$userId3', Password : '$password3'");
my $userId4 = get_user_name(4);
my $password4 = get_password(4);
print_msg("[4] UserName : '$userId4', Password : '$password4'");
sub load_credentials {
my ($credentials) = @_;
chomp($credentials);
if ( length($credentials) <= 0 ) {
print_msg("WARNING: Credentials not found");
return '';
}
else {
my @userIds = split( /<<SiteGuard_Credentials>>/, $credentials );
my @passwords = split( /<<SiteGuard_Credentials>>/, $credentials );
@ALL_USERS = split( /<<SiteGuard_User>>/, $userIds[0] );
@ALL_PASSWORDS = split( /<<SiteGuard_Password>>/, $passwords[1] );
$NO_OF_USERS = $#ALL_PASSWORDS + 1;
$NO_OF_PASSWORDS = $#ALL_PASSWORDS + 1;
if ( "$NO_OF_USERS" != "$NO_OF_PASSWORDS" ) {
print_msg("INFO: Total no. of users : '$NO_OF_USERS'");
print_msg("INFO: Total no. of passwords : '$NO_OF_PASSWORDS'");
print_msg("ERROR: Number of User Names and number of Passwords do not match.");
exit 1;
}
else {
print_msg("Total of '$NO_OF_USERS' credentials found.");
}
}
}
sub get_user_name {
my ($index) = @_;
my $userName = "";
if ( "$NO_OF_USERS" > $index - 1 ) {
$userName = $ALL_USERS[ $index - 1 ];
}
else {
print_msg("ERROR: Credential at index '$index' not found.");
exit 1;
}
return $userName;
}
sub get_password {
my ($index) = @_;
my $password = "";
if ( "$NO_OF_PASSWORDS" > $index - 1 ) {
$password = $ALL_PASSWORDS[ $index - 1 ];
}
else {
print_msg("ERROR: Credential at index '$index' not found.");
exit 1;
}
return $password;
}
sub print_msg {
my ($msg) = @_;
print("$msg \n");
}