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
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.
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
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.
Tags shell-script