[英]EXISTS=`ssh xyz 'egrep “$username” /etc/passwd | cut -d':' -f1'` command is not working properly
我正在編寫一個腳本來在多個Linux服務器上添加用戶。 但首先我要檢查提到的用戶名是否已存在於該特定服務器上。
EXISTS=`ssh xyz 'egrep "$username" /etc/passwd | cut -d':' -f1'`
這是我正在嘗試的命令。 但它沒有給我我想要的輸出..它給了我passwd文件中的所有用戶名。 變量EXISTS應該只有那個用戶名,或者它應該是空的。
在任何現代Linux系統上,你都有自己的getent
。 所以不要像這樣檢查,檢查返回代碼(通過$?
):
getent passwd $username &>/dev/null
(如果用戶存在則退出0,如果不存在則退出2;手冊頁中描述的其他錯誤代碼)
(注意:這不是一個真正的Java問題,是嗎?)
編輯好,完整代碼......
ssh thehost getent passwd $username;
RC=$?;
# check for $RC here; if 0, the user exists; if not 0 it doesn't.
# Man getent for more details
請注意,另一種解決方案是嘗試直接添加用戶; 如果用戶已經存在,或者其他原因,該命令將失敗; 再次,man useradd,並檢查可能的返回碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.