Wallet v1
#!/bin/bash
echo "===== TDE Wallet Check - Version 1 ====="
# ===== PHASE 1: Validate Input and Set Environment =====
echo "PHASE 1: Setting up Oracle Environment"
if [[ -z "$1" ]]; then
echo "ERROR: ORACLE_SID is required!"
echo "Usage: $0 <ORACLE_SID>"
exit 1
fi
export ORACLE_SID=$1
export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
SQLPLUS="$ORACLE_HOME/bin/sqlplus -s / as sysdba"
echo "ORACLE_SID set to: $ORACLE_SID"
echo "ORACLE_HOME: $ORACLE_HOME"
# ===== PHASE 2: Fetch Database Information =====
echo "PHASE 2: Fetching database and wallet details"
get_db_info() {
$SQLPLUS <<EOF
SET HEAD OFF FEEDBACK OFF PAGESIZE 0 LINESIZE 100
SELECT
name || '|' ||
status || '|' ||
NVL((SELECT WRL_PARAMETER FROM gv\$encryption_wallet
WHERE inst_id = (SELECT INSTANCE_NUMBER FROM v\$instance)), 'NA') || '|' ||
(SELECT CASE WHEN COUNT(*) > 0 THEN 'YES' ELSE 'NO' END
FROM dba_tablespaces WHERE ENCRYPTED='YES')
FROM v\$database, v\$encryption_wallet;
EXIT;
EOF
}
DB_INFO=$(get_db_info)
IFS='|' read -r DBNAME WALLET_STATUS WALLET_LOCATION TBS_ENCR <<< "$DB_INFO"
echo "DB Name: $DBNAME"
echo "Wallet Status: $WALLET_STATUS"
echo "Wallet Location: $WALLET_LOCATION"
echo "Tablespace Encrypted: $TBS_ENCR"
# ===== PHASE 3: Check Wallet Availability =====
echo "PHASE 3: Checking Wallet Presence"
WRL_PRESENT="N"
if [[ "$WALLET_LOCATION" != "NA" && -d "$WALLET_LOCATION" ]]; then
WRL_PRESENT="Y"
echo "Wallet Found at: $WALLET_LOCATION"
else
echo "Wallet Not Found!"
fi
# ===== PHASE 4: Validate Wallet Passwords =====
echo "PHASE 4: Checking Wallet Passwords"
STANDARD_PWD="xyxyxyxyxytsts"
NEWPSWD=$(/path/to/pwEcho.exe $ORACLE_SID WALLET)
PWD_MATCH="N"
CLK_PWD="N"
if [[ "$WRL_PRESENT" == "Y" ]]; then
WALLET_PWD_MATCH_STD=$($ORACLE_HOME/bin/mkstore -wrl $WALLET_LOCATION -list -password $STANDARD_PWD 2>/dev/null)
WALLET_PWD_MATCH_CLOAK=$($ORACLE_HOME/bin/mkstore -wrl $WALLET_LOCATION -list -password $NEWPSWD 2>/dev/null)
if [[ -n "$WALLET_PWD_MATCH_CLOAK" ]]; then
echo "Cloakware Password is Valid"
PWD_MATCH="Y"
CLK_PWD="Y"
elif [[ -n "$WALLET_PWD_MATCH_STD" ]]; then
echo "Wallet Password Matches Standard Password"
PWD_MATCH="Y"
CLK_PWD="N"
else
echo "Wallet Password Does Not Match Any Known Password"
fi
else
echo "Skipping password check as wallet is not found."
fi
# ===== PHASE 5: Backup Wallet (if valid) =====
echo "PHASE 5: Backing up Wallet (if password matches)"
WRL_BKUP="N"
SHARED_LOCATION="/tmp/shared"
if [[ "$PWD_MATCH" == "Y" ]]; then
mkdir -p $SHARED_LOCATION
cp $WALLET_LOCATION/* $SHARED_LOCATION
echo "Wallet Backup Completed"
WRL_BKUP="Y"
else
echo "Skipping Wallet Backup - Password Validation Failed"
fi
# ===== PHASE 6: Generate Report =====
echo "PHASE 6: Generating Report"
AUTOLOGON=$(grep -q "AUTOLOGIN" <<< "$WALLET_STATUS" && echo "Y" || echo "N")
RUN_DATE=$(date '+%Y-%m-%d %H:%M:%S')
REPORT_FILE="/tmp/report-$(date '+%Y%m%d').log"
cat <<EOF > $REPORT_FILE
DB Name: $DBNAME
TDE: $( [[ "$WALLET_STATUS" == "OPEN" ]] && echo "Y" || echo "N" )
WRL: $WRL_PRESENT
Autologon (valid for 19c.11/12c-NA): $AUTOLOGON
TBS ENCR: $TBS_ENCR
WRL BKUP: $WRL_BKUP
KEY BKUP: Y/N
CLK: $CLK_PWD
PWD Match: $PWD_MATCH
Run Date: $RUN_DATE
EOF
echo "Report saved at $REPORT_FILE"
echo "===== TDE Wallet Check Completed Successfully ====="
Comments
Post a Comment