我可以将用户名列表导入useradd吗?

时间:2016-11-16 18:03:55

标签: linux bash pipe

我有一系列文件夹,我已经过滤掉了,需要创建用户帐户才能使用它们。我可以将grep的输出作为用户名传输到useradd吗?

上下文:FTP迁移。从Windows迁移到Linux FTP服务器,但存储仍保留在原来的位置。这些文件夹是旧的FTP用户文件夹,文件夹名称与FTP登录名匹配。看着:

ls /media/OldFTP | grep -Ev '^[[:digit:]]{4}|^P[[:digit:]]{4}|^W[[:digit:]]{4}' | useradd -M -g ftpusers -N -p [encrytedPassword]

我试图将我的grep搜索的输出传递给useradd的用户名字段。

2 个答案:

答案 0 :(得分:3)

如果encryptedPassword对每个用户都相同,则可以使用xargs -n1 <cmd>为stdin上传递的每个参数运行一次命令。

ls /media/OldFTP |
    grep -Ev '^[[:digit:]]{4}|^P[[:digit:]]{4}|^W[[:digit:]]{4}' |
    xargs -n1 -d'\n' useradd -M -g ftpusers -N -p [encryptedPassword]

答案 1 :(得分:2)

您可能需要使用for循环。类似的东西:

for user in `ls /media/OldFTP | grep -Ev '^[[:digit:]]{4}|^P[[:digit:]]{4}|^W[[:digit:]]{4}'`
do
   # initialize user's password somehow.
   encrytedPassword=`openssl rand -base64 10 | tr -cd '[:alnum:]' | cut -c1-10`
   useradd -M -g ftpusers -N -p $encrytedPassword $user
done