循环从文件创建

循环从文件创建

我有一个文件(测试)它包含两列和两行

皮波毫米

冥王星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 个pippopluto以下目录/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,但我认为这不适合这里。

相关内容