質問: for line in `sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP cat $FILE_U` do user_name=`sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP echo $line | cut -d ':' -f 1` txt=`sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP cat $FILE_P | grep -e "^$user_name"` user_id=`sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP echo $txt | cut -d ':' -f 3` group_id=`sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP echo $txt | cut -d ':' -f 4` home_dir=`sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP echo $txt | cut -d ':' -f 6` sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP echo "USER_ID:${user_id} GROUP:${group_id} HOME_DIR:$home_dir" sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP cp -rf /etc/skel/. $home_dir/ sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP chown -R $user_id $home_dir sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP chgrp -R $group_id $home_dir done done << FILE $LIST FILE ※addusers.txtの中身 test1:x::::/home/test1:/bin/bash ※pass.txtの中身 ノードIP パスワード
回答: `useradd`コマンドと`chpasswd`コマンドで行います。パスワードは`passwd`コマンドでなく`chpasswd`コマンドを使うことでバッチ実行できます。 `root`で`ssh`出来る設定かどうかがポイントでしょうか。出来ないと面倒。 サンプル ==== `root`で`ssh`出来るという前提だとこんな感じで。 ``` for host in hostA hostB hostC hostD do while read user pass do echo ssh root@$host sh -c "useradd -d /home/$user -g $user $user; echo $user:$pass | chpasswd" done <