3

以下のOSXのコマンドは、アカウントが無効になっているかどうかを確認します。

文字列「isDisabled=X」をgrepして無効なユーザーのレポートを作成したいのですが、出力が3行であるため、これを行う方法がわかりません。3行目の最初の12文字に関心があります。 :

bash-3.2# pwpolicy -u jdoe -getpolicy
Getting policy for jdoe /LDAPv3/127.0.0.1

isDisabled=0 isAdminUser=1 newPasswordRequired=0 usingHistory=0 canModifyPasswordforSelf=1 usingExpirationDate=0 usingHardExpirationDate=0 requiresAlpha=0 requiresNumeric=0 expirationDateGMT=12/31/69 hardExpireDateGMT=12/31/69 maxMinutesUntilChangePassword=0 maxMinutesUntilDisabled=0 maxMinutesOfNonUse=0 maxFailedLoginAttempts=0 minChars=0 maxChars=0 passwordCannotBeName=0 validAfter=01/01/70 requiresMixedCase=0 requiresSymbol=0 notGuessablePattern=0 isSessionKeyAgent=0 isComputerAccount=0 adminClass=0 adminNoChangePasswords=0 adminNoSetPolicies=0 adminNoCreate=0 adminNoDelete=0 adminNoClearState=0 adminNoPromoteAdmins=0

あなたのアイデア/提案は大歓迎です!最終的に、これはBashスクリプトの一部になります。ありがとう。

4

2 に答える 2

4

これは、 " "grepに一致させるために使用する方法です。isDisabled=X

grep -o "isDisabled=."


説明:

  • grep: grep コマンドを呼び出します
  • -o--only-matchingオプションを使用しますgrep(grepマニュアルから:「一致する行の一致した(空でない)部分のみを出力し、そのような部分はそれぞれ別の出力行に出力します。」
  • "isDisabled=.": これは grep に与える検索パターンです。は正規表現の.一部で、「改行以外の任意の文字に一致する」という意味です。

使用法:

これは、スクリプトの一部として使用する方法です。

pwpolicy -u jdoe -getpolicy | grep -oE "isDisabled=."

これは、結果を変数に保存する方法です。

status=$(pwpolicy -u jdoe -getpolicy | grep -oE "isDisabled=.")

コマンドが少し前に実行され、コマンドの結果が「results.txt」というファイルに保存されている場合はgrep、次のように入力として使用します。

grep -o "isDisabled=." results.txt
于 2012-11-27T06:13:28.560 に答える
1

sedを次のように使用できます

cat results.txt | sed -n 's/.*isDisabled=\(.\).*/\1/p'

これにより、の値が出力されisDisbaledます。

于 2012-11-27T08:08:56.907 に答える