Diga/sx magic script

出典: ScalixWikiJP

Scalix Wiki -> Diagnostics -> Diag/sx magic script

このページはmagic script Diag/sx magic script (米国サイト)の翻訳です。

ScalixDBスキーマ名スクリプト

ScalixDB (PostgreSQLデータベース)では、ユーザー毎に自身のスキーマが割り当てられています。そのスキーマはユーザー自身のデータベースのPostgreSQL用語です。 ユニークさを保証し、PostgreSQLの名前規則に従うために、スキーマの名前はユーザーのディレクトリ・エントリのGUIDのMD5ハッシュ値を計算することにより生成されます。 不幸なことに、検査で特定のユーザーのスキーマを示すことができません。 この下のスクリプトはディレクトリ検索とMD5ハッシュ計算を行います。 このスクリプトはローカルのPostgreSQLデータベースのスキーマの確認も行います。 スクリプトを動かすマシンに依存すること、ユーザーのスキーマがデータベースに見つからないこと、ローカルマシンにデータベースが無いために検索が失敗するかもしれないことを記しておきます。 その場合は、スクリプトが出力するスキーマ名を取り、適切なデータベースに対して使用してください。

omshowpguser

#!/bin/sh

if [ -z "$1" ]; then
    echo "Usage: $0 <filter>"
    echo "Example: $0 S=Smith"
    exit 2
fi

FILTER="$1"

LC_ALL=C
export LC_ALL

# Pass "" to prevent implicit passing of $*
. /opt/scalix-postgres/bin/common-helpers.sh ""

/etc/init.d/scalix-postgres status | grep 'is running' >/dev/null 2>/dev/null
if [ $? = "0" ]; then
    POSTGRES_RUNNING=1
else
    POSTGRES_RUNNING=0
fi

if [ $POSTGRES_RUNNING -ne 1 ]; then
    /etc/init.d/scalix-postgres start
fi

IDS=`omsearch -e $FILTER -m GLOBAL-UNIQUE-ID`
if [ $? -ne 0 ]; then
    exit 1
fi

# The following won't work
#GUID=`echo "$IDS" | cut -d'=' -f2- | tr -d '[:space:]'`
# Better is:
GUID_TEMP=`echo "$IDS" | cut -d'=' -f2- | tr -d '[:space:]'`
GUID=`echo "$GUID_TEMP" | sed 's/\\\//g'`

HASHED=`python -c "import md5; print md5.new('${GUID}').hexdigest()"`
SCHEMA="sx_${HASHED}"

echo "$IDS"
echo "User DB Schema ID: $SCHEMA"

su - -c "$PGENGINE/psql -h $PSQL_DIR -p $PSQL_PORT -c '\dn' scalix" postgres | grep "$SCHEMA" >/dev/null 2>/dev/null
res=$?

found="No"
if [ $res == 0 ]; then
    found="Yes"
fi

echo "User Schema Exists in DB on this machine: $found"