我想要一個單行shell命令或一個簡短的Bash/Python腳本來列出可以登錄到該機器的Linux服務器上的所有用戶。因此,用戶如www數據和郵件將被排除在外,但root
將成爲列表的一部分。例如,該代碼可以工作。 I found it here。但我正在尋找更簡單的清潔劑。可以登錄的Linux服務器列表用戶
awk -F: '$2 != "*" && $2 !~ /^!/ { print $1, " can log in" }' /etc/shadow
我想要一個單行shell命令或一個簡短的Bash/Python腳本來列出可以登錄到該機器的Linux服務器上的所有用戶。因此,用戶如www數據和郵件將被排除在外,但root
將成爲列表的一部分。例如,該代碼可以工作。 I found it here。但我正在尋找更簡單的清潔劑。可以登錄的Linux服務器列表用戶
awk -F: '$2 != "*" && $2 !~ /^!/ { print $1, " can log in" }' /etc/shadow
您可以使用此oneliner列出有密碼在/ etc/shadow中,一個每設置所有用戶line:
getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:
這隻適用於本地用戶,不適用於使用LDAP數據庫或其他方法。
如果您正在使用LDAP,並要列出目錄中的所有用戶,您可以嘗試:
getent passwd | cut -f1 -d:
雖然,這將列出所有用戶,包括「非用戶」賬戶,如www-data
我發現bash腳本在Find Linux users that can log in with password。
猛砸版本:
awk -F: '$2 != "*" && $2 !~ /^!/ { print $1, " can log in" }' /etc/shadow
Python版本:
users = [i.split(':') for i in open('/etc/shadow').readlines()]
print '\n'.join([i[0] for i in users if i[1] not in ('!', '*')])
看起來您希望我們爲您編寫一些代碼。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出和實際獲得的輸出(控制檯輸出,堆棧跟蹤,編譯器錯誤 - 無論是適用)。您提供的細節越多,您可能會收到的答案就越多。 –
我用一些有效的代碼更新了問題。 –
你已經很多了,只需從你的sshd配置文件中讀取min-user-id的值,並使用它來過濾/ etc/passwd中的條目; shadow – lynks