プライマリ・コンテンツに移動
Oracle® Site Guard管理者ガイド
13c リリース3
E98541-01
目次へ移動
目次

前
前へ
次

A パラメータとして資格証明を渡す

ユーザー定義のスクリプトにパラメータとして渡される資格証明は、入力ストリームとして使用できます。資格証明をスクリプトに渡したり、スクリプトから資格証明を抽出する方法について説明します。

この付録の内容は次のとおりです。

A.1 パラメータとして資格証明を渡す

Oracle Site Guardスクリプトに資格証明をパラメータとして渡します。

次のスクリプトは、資格証明をパラメータとして渡す方法を示しています。

注意:

この付録のスクリプトは、サンプル・スクリプトのみを示しています。環境に応じて変更して適用してください。

A.2 extract_credentials_sample_script.sh

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'"

A.3 extract_credentials_sample_script.py

Oracle Site Guardスクリプトから資格証明を抽出します。

#!/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, credential):
        if self.credentialNotSet :
            if self.noOfUsers < int(credential) :
                print("ERROR: Credential not found at index '%s'"%credential)
                sys.exit(1)
            else :
                credentialIndex = credential - 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()

A.4 extract_credentials_sample_script.pl

Oracle Site Guardスクリプトから資格証明を抽出します。

#!/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");
}