我有一系列文件夹,我已经过滤掉了,需要创建用户帐户才能使用它们。我可以将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的用户名字段。
答案 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