簡體   English   中英

EXISTS =`ssh xyz'egrep“$ username”/ etc / passwd | cut -d':' - f1'`命令無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM