- PR -

シェルスクリプトでユーザー作成

1
投稿者投稿内容
常連さん
会議室デビュー日: 2004/04/06
投稿数: 38
お住まい・勤務地: 大阪
投稿日時: 2004-04-06 12:56
最近シェルスクリプトを勉強しています

テキスト(addlist.txt)にIDとパスワードを書いて(user01:pass1234)
シェルスクリプトでユーザーを作成したいのですが
うまくいきません

テキストからIDとパスワードの取得〜ユーザー作成はできるのですが
パスワードの設定の所で止まってしまいます

スクリプトの最後の
echo $PASS
echo $PASS
がおかしい思うのですが
どうすればスクリプトでパスワードを設定できるのでしょうか?

宜しくお願いします

----------------------------------------------

#!/bin/sh

while read LINE
do

USER=`echo $LINE | sed -e 's/[:].*$//'`
PASS=`echo $LINE | sed -e 's/^.*[:]//'`

done < addlist.txt

useradd $USER
passwd $USER

echo $PASS
echo $PASS

exit

----------------------------------------------
会議室デビュー日: 2004/03/13
投稿数: 5
投稿日時: 2004-04-06 13:13
passwdコマンドは、標準入力からパスワード文字列を読み込みませんので、
引用:
passwd $USER

echo $PASS
echo $PASS


ではだめです。

スクリプトからパスワードを設定する場合は、useraddコマンドの-pオプションに、暗号化済みのパスワード文字列を指定します。

パスワードの暗号化方法は、cryptのマニュアルを参考にしてください。
常連さん
会議室デビュー日: 2004/04/06
投稿数: 38
お住まい・勤務地: 大阪
投稿日時: 2004-04-06 14:52
即レスありがとうございました

cryptが効かなかったので
調べて作成し以下の様にしたら出来ました

勉強になりました

ありがとうございました

------------------------------------

#!/bin/sh

while read LINE
do

USER=`echo $LINE | sed -e 's/:.*$//'`
PASS=`echo $LINE | sed -e 's/^.*://'`
useradd -p `crypt $PASS` $USER

done < addlist.txt

exit

------------------------------------
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2004-04-07 01:50
OSがなにか分かりませんが
Redhat Linuxとかだったら
chpasswdを使えばすみますね。

常連さん
会議室デビュー日: 2004/04/06
投稿数: 38
お住まい・勤務地: 大阪
投稿日時: 2004-04-07 11:56
OSはFedoraCore1です

chpasswdでも出来ました
一度書き出したりしてますけど(汗

本当に勉強になります
ありがとう御座います

------------------------------------
#!/bin/sh

#FILE READ
while read LINE
do

USER=`echo $LINE | sed -e 's/:.*$//'`

#TEMP FILE CREATE
echo $LINE >> addlist_temp.txt

#USERADD
useradd $USER
chpasswd < addlist_temp.txt

#TEMPFILE DELETE
rm -f addlist_temp.txt

done < addlist.txt

exit
------------------------------------
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2004-04-07 12:31
> #TEMP FILE CREATE
> echo $LINE >> addlist_temp.txt
>
> #USERADD
> useradd $USER
> chpasswd < addlist_temp.txt
>
> #TEMPFILE DELETE
> rm -f addlist_temp.txt

これって、

echo $LINE | chpasswd

といっしょですよね。
常連さん
会議室デビュー日: 2004/04/06
投稿数: 38
お住まい・勤務地: 大阪
投稿日時: 2004-04-09 10:32
>echo $LINE | chpasswd
>といっしょですよね。

ご指摘の部分を修正し短くなりました
有難うございます

------------------------------------

#!/bin/sh

#FILE READ
while read LINE
do

USER=`echo $LINE | sed -e 's/:.*$//'`

#USERADD
useradd $USER
echo $LINE | chpasswd

done < addlist.txt

exit
1

スキルアップ/キャリアアップ(JOB@IT)