loop create from file

1

Eu tenho um arquivo (teste) Ele contém duas colunas e duas linhas

pippo mm

pluto tt

Eu gostaria de criar um diretório, proprietário e criar uma senha Eu faço alguns pensar assim

while IFS= read a b; do
mkdir -p /srv/ftp/$a
chown -R ftp:ftp /srv/ftp/$a/
passwd $a $b
done <  /test

Espero ter 2 diretório pippo e pluto sob /srv/ftp/ , mas eu tenho apenas pippo

obrigado pela sua ajuda.

    
por Marco 28.04.2016 / 10:31

2 respostas

0

Você vai querer que IFS seja um espaço, deve ser assim:

while IFS=" " read a b; do
mkdir -p /srv/ftp/$a
chown -R ftp:ftp /srv/ftp/$a/
passwd $a $b
done <  /test 
    
por 28.04.2016 / 10:48
0

Você tem um arquivo contendo dois campos separados por espaço, o nome de usuário e a senha:

pippo mm
pluto tt

Você pode usar um script como este para processar o arquivo, criando a conta do usuário e o diretório correspondente:

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

Existem outras opções para as senhas de configuração, como chpasswd , mas não acredito que isso seja apropriado aqui.

    
por 28.04.2016 / 12:39