我有一个文件(测试)它包含两列和两行
皮波毫米 冥王星TT
我想创建目录、所有者并创建密码我确实有一些这样的想法
while IFS= read a b; do
mkdir -p /srv/ftp/$a
chown -R ftp:ftp /srv/ftp/$a/
passwd $a $b
done < /test
我希望有 2 个pippo
及pluto
以下目录/srv/ftp/
,但我只有pippo
感谢您的帮助。
答案1
你想要IFS
成为一个空间,它应该是这样的:
while IFS=" " read a b; do
mkdir -p /srv/ftp/$a
chown -R ftp:ftp /srv/ftp/$a/
passwd $a $b
done < /test
答案2
您有一个包含两个空格分隔字段的文件,即用户名和密码:
pippo mm pluto tt
您可以使用这样的脚本来处理文件,创建用户帐户和相应的目录:
ftpuid=$(getent passwd ftp | cut -d: -f3)
if test -z "$ftpuid"; then echo "No ftp account" >&2; exit 1; fi
while read -r user password
do
test -z "$user" && continue
echo "Creating account for $user, with home /srv/ftp/$user" >&2
useradd -d /srv/ftp/"$user" -M -N -g ftp -o -u "$ftpuid" "$user"
mkdir -m700 -p /srv/ftp/"$user"
chown "$ftpuid":ftp /srv/ftp/"$user"
test -n "$password" && ( echo "$password"; echo "$password" ) | passwd -q "$user" 2>/dev/null
done < file.txt
还有其他设置密码的选项,例如chpasswd
,但我认为这不适合这里。