두 개의 열과 두 개의 행이 포함된 파일(테스트)이 있습니다.
피코 밀리미터 명왕성 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
여기서는 적절하지 않다고 생각합니다.