Dell Unity:管理者パスワードに特殊文字が含まれているUEMCLIの問題
Summary: LinuxまたはMicrosoftオペレーティング システムでUEMCLIを使用する場合、パスワード内の特定の特殊文字が、パスワードの一部として渡されるのではなく、オペレーティング システムによって解釈される場合があります。この動作は予期された動作であり、オペレーティング システムによって決定されます。サポートされている特殊文字と文字エスケープのガイダンスについては、オペレーティング システムのドキュメントを参照してください。 ...
Symptoms
UEMCLI LinuxまたはMicrosoftオペレーティング システム上のVNXeまたはDell Unityシステムでは、パスワード内の特定の特殊文字が、パスワード文字列の一部として渡されるのではなく、オペレーティング システムによって解釈される場合があります。
$ 文字 (Linux では)
[user@localhost ~]$ uemcli -d <IP> -u linuxtest -p xRz4bJH$Wxv /sys/general show
Storage system address: <IP>
Storage system port: 443
HTTPS connection
Operation failed. Error code: 0x6000001
You do not have access to perform the requested operation. (Error Code:0x6000001)
$ 文字の解釈はオペレーティング システムによって変わりません。二重引用符で囲む必要があります。")は特殊文字として扱われます。パスワードに二重引用符が含まれていて、適切にエスケープされていない場合、 UEMCLI 認証エラーが返されない場合があります。代わりに、コマンドは UEMCLI 期待されるコマンド出力ではなく、構文をヘルプします。
C:\Users\user>uemcli -d <IP> -u microsofttest -p Pass"word123! /sys/general show
[Get help on client options]
uemcli -help {CMDHELP | CMD | -upload | -download |
-version | -saveUser | -removeUser | -removeAllUsers |
-default | -certList | -certDel | -certClear |
-certImport}Cause
一部の文字はオペレーティング システムにとって特別な意味を持ち、パスワードの一部としてではなく、コマンド ライン構文として解釈される場合があります。その結果、パスワードは UEMCLI ユーザーが入力したパスワードとは異なる場合があります。
この動作は予期されたものであり、欠陥ではありません。 UEMCLI またはUnisphere。コマンドライン引数で特殊文字を使用またはエスケープする方法については、オペレーティングシステムベンダーが提供するドキュメントを参照してください。
Resolution
-securePassword オプションの代わりに -p オプションを選択します。『オペレーティングシステム』ディスクはオプションなので、同梱されていないコンピューターもあります。 -securePassword オプションは、対話形式でパスワードの入力を求めるプロンプトを表示するため、オペレーティング システムが特殊文字を解釈するのを防ぎ、パスワードが画面に表示されたり、コマンド履歴やログに記録されたりしないようにします。
[user@localhost ~]$ uemcli -d <IP> -u linuxtest -securePassword /sys/general show
Password:
Storage system address: <IP>
Storage system port: 443
HTTPS connection
1: System name = Unity Array
Model = Unity 300
Platform type = EMC Storage System
Product serial number = CKM00161XXXXXX
Auto failback = on
Health state = Major failure (20)
プロファイルエディタで UEMCLI がスクリプトで使用されている場合は、パスワードの特殊文字がオペレーティング システムのコマンドライン要件に従って適切にエスケープされていることを確認してください。一般的な方法は、特殊文字の前にバックスラッシュ (\) は、シェルによって解釈されるのを防ぐのに役立ちます。
Linuxでは、パスワードを一重引用符で囲み、バックスラッシュを使用して特殊文字をエスケープします。一重引用符だけでは、すべての特殊文字に対して十分ではない場合があります。
例:
パスワードは一重引用符で囲まれ、特殊文字はエスケープされます。コマンドは成功します。
[user@localhost ~]$ uemcli -d <IP> -u linuxtest -p 'xRz4bJH\$Wxv' /sys/general show
Storage system address: <IP>
Storage system port: 443
HTTPS connection
1: System name = Unity Array
Model = Unity 300
Platform type = EMC Storage System
Product serial number = CKM00161XXXXXX
Auto failback = on
Health state = Major failure (20)
エスケープなしで一重引用符で囲まれると、コマンドは失敗します。
[user@localhost ~]$ uemcli -d <IP> -u linuxtest -p 'xRz4bJH$Wxv' /sys/general show
Storage system address: <IP>
Storage system port: 443
HTTPS connection
Operation failed. Error code: 0x6000001
You do not have access to perform the requested operation. (Error Code:0x6000001)
Microsoft Windowsオペレーティング システムでは、コマンド解析に影響する特殊文字をエスケープして、UEMCLIに正しく渡されるようにする必要があります。これを行うには、バックスラッシュ (\)を文字の前に置きます。
たとえば、パスワードに二重引用符 (")、引用符はバックスラッシュでエスケープする必要があります。これにより、コマンド インタープリターがパスワードを構文として扱うのを防ぎ、パスワードを正しく処理できます。
例:
二重引用符はバックスラッシュでエスケープされ、コマンドは成功します。
C:\Users\user>uemcli -d <IP> -u microsofttest -p Pass\"word123! /sys/general show
Storage system address: <IP>
Storage system port: 443
HTTPS connection
1: System name = Unity Array
Model = Unity 300
Platform type = EMC Storage System
Product serial number = CKM00161XXXXXX
Auto failback = on
Health state = Major failure (2)