3

OSX 中的以下命令检查帐户是否被禁用(或未被禁用)。

我想用 grep 字符串“isDisabled=X”来创建禁用用户的报告,但由于输出在三行上,我不确定如何执行此操作,而且我对第三行的前 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 回答