3

Oracleウォレットを使用して、接続するデータベースのパスワードを保存します。パスワードポリシーでは、変更のスクリプトを作成するのに十分な頻度でパスワードを変更する必要があります。データベースのパスワード自体を変更できるバッチファイルがありますが、ウォレットへの変更もスクリプト化したいと思います。問題は、mkstoreを呼び出した後にウォレットのパスワードを入力する必要があり、パスワードをパラメーターとして渡すことができないことです。ウォレットのクレデンシャルの変更をスクリプト化する方法はありますか?

4

5 に答える 5

2

エコーを介してストアのpasswdを取得し、スクリプトを作成できるようにします。

echo "$ passwd" |

エコー「WalletPasswd」| mkstore-wrl。-listCredential

これにより、出力が一覧表示されます。同様に、すべてのmkstoreのコマンドは、orapkiが機能します。

于 2015-12-03T04:10:09.140 に答える
1

少なくとも11gの場合:

orapki wallet change_pwd -wallet {wallet directory}  \
              -oldpwd {old password}   -newpwd  {new password}

ps -fe|grepから見えるプロセスラインでパスワードが難読化されるかどうかはテストしていません。

于 2011-02-17T21:44:34.863 に答える
1

これが私が思いついたPowershellスクリプトです。要件:

  1. PowerShellがインストールされています。
  2. スクリプトが有効になっています(Set-ExecutionPolicy RemoteSigned管理者として実行)。
  3. スクリプトはc:\ oracle\WalletCreatorにあります。
  4. Windows Automation Snapin for PowerShellのWasp.dllは、scriptフォルダーにあります。

ウォレットはc:\ oracle\Walletsに作成されます。これがスクリプトです。

Import-Module c:\oracle\WalletCreator\WASP.dll

$WalletCreated = 0

cls
Write-Host "                                                           " -foregroundcolor White -backgroundcolor DarkRed
Write-Host "   Warning: This script will delete your current wallet.   " -foregroundcolor White -backgroundcolor DarkRed
Write-Host "                                                           " -foregroundcolor White -backgroundcolor DarkRed

do {
    #Get credentials
    Write-Host " " 
    Write-Host " New Wallet Entry                                          " -foregroundcolor White -backgroundcolor DarkGreen
    Write-Host "    To exit press return without entering anything.        " -foregroundcolor White -backgroundcolor DarkGreen
    $DB = Read-Host "Connection Name"
    if ($DB -eq "") {
       Return
    }
    $Username = Read-Host "       Username"
    if ($Username -eq "") {
       Return
    }
    $Password = Read-Host -AsSecureString "       Password" 

    #Convert from SecureString to String.
    $BasicString = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password)
    $Password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BasicString)
    if ($Password -eq "") {
       Return
    }

    if ($WalletCreated -eq 0) {
        #Create folder in case it doesn't exist.
        md c:\oracle\Wallets -Force | Out-Null

        #Delete any wallet in the folder now.
        del c:\oracle\Wallets\*.* | Out-Null

        #Get GUID for wallet password.
        $WalletPassword = [guid]::NewGuid().toString()
        $WalletPassword = $WalletPassword + "`r"

        #Create Wallet.
        Start-Process -FilePath mkstore -ArgumentList "-wrl c:\oracle\Wallets\ -create"
        Start-Sleep -Milliseconds 500
        Select-Window -ProcessName cmd | Select -First 1 | Send-Keys -keys $WalletPassword
        Start-Sleep -Milliseconds 300
        Select-Window -ProcessName cmd | Select -First 1 | Send-Keys -keys $WalletPassword

        $WalletCreated = 1
        Start-Sleep -Milliseconds 1000
    }

    #Create Credential.
    $CC = "-wrl c:\oracle\Wallets\ -createCredential " + $DB + " " 
    $CC = $CC + $Username + " " + $Password
    Start-Process -FilePath mkstore -ArgumentList $CC
    Start-Sleep -Milliseconds 300
    Select-Window -ProcessName cmd | Select -First 1 | Send-Keys -keys $WalletPassword
    Start-Sleep -Milliseconds 1000
} 
until ($DB -eq "")
于 2011-02-18T14:59:48.767 に答える
0

AutoHotKeyソリューション:

; CreateWallet.ahk

#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Window
SendMode Input
#SingleInstance Force
SetTitleMatchMode 2
#WinActivateForce
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1


Macro1:
Random, WalletPassword, 10000000000, 9999999999999999999999999
WalletPassword := WalletPassword "ExtraCharacters"
InputBox, Username, Username, Please enter your database username, , , , , , , , lriffel
InputBox, DatabasePassword, Database Password, Please enter the database password., HIDE
Run, c:\windows\system32\cmd.exe, c:\
Sleep, 500
Send, md c{:}\oracle\Wallet{enter}
Sleep, 200
Send, cd c{:}\oracle\Wallet{enter}
Sleep, 200
Send, del -s c{:}\oracle\Wallet\*.*{enter}
Sleep, 200
Send, Y{enter}
Sleep, 200
Send, mkstore -wrl c:\oracle\Wallet\ -create{enter}
Sleep, 200
Send, %WalletPassword%{enter}
Sleep, 200
Send, %WalletPassword%{enter}
Sleep, 200
Loop, Read, F:\Programs\CreateWallet\dbs.txt
{
    WinHide, ahk_class ConsoleWindowClass
    Sleep, 333
    Send, mkstore -wrl c:\oracle\Wallet\ -createCredential %A_LoopReadLine% %Username% %DatabasePassword%{enter}
    Send, %WalletPassword%{enter}
    Sleep, 200
    Send, cls{enter}
    Sleep, 200
    WinShow, ahk_class ConsoleWindowClass
    Sleep, 550
}
Send, exit{enter}
MsgBox, 64, Wallet Created, Wallet Created
Return

; This script was created using Pulover's Macro Creator
; www.macrocreator.com
于 2017-05-05T18:15:58.733 に答える
0

ファイルからのWindows配管は機能します。ウォレットのパスワードを2行に分けて、ウォレットの作成と-createCredentialで機能するようにしました。

set PW=\MySecureFolder\MyWalletPasswordOn2Lines.txt
mkstore -wrl . -create < %PW%

もちろん、スクリプトは最初にファイルをプロンプトして作成し、完了したらファイルを削除することができます。スクリプトが異常終了した場合に備えて、管理者専用フォルダに入れてください。

于 2021-02-26T21:28:54.740 に答える