dポイントプレゼントキャンペーン実施中!

Linuxでスクリプトを作りたいのですが初めてでしてアドバイスいただきたいのですが。「ユーザを加え、パスワードの設定。その後確認画面として/etc/passwordと/etc/shadowにて新規に作成したユーザとパスワード”のみ”表示される」とゆうのが条件です。更にwhileを使ったユーザを作成したのちのy/nの応答でnを入力するまでは繰り返しユーザの追加が行えるようにしたいのですが。

途中まで教科書片手に作りましたが行き詰まってしまいました。
Variableに混乱しています。

CONTINUE=y
while [ "$CONTINUE" != "n" ]
do
echo "adding a user"
useradd -d /etc/shadow "$USERNAME"
echo -e "type a user name" /c
read USERNAME
passwd "$PASSWORD"
echo -e "type a password" /c
read PASSWORD

A 回答 (2件)

私もNo1さんに賛成だなぁ。

なんか既にめちゃくちゃだもの。useraddのオプションもヘンだし。

スクリプトを作る意義は聞かないことにして(勉強のためだと理解するとして)、このような処理をするときは、すべての変数を取得してから目的のコマンド(useradd)を動かすのが普通です。
また、取得したパスワードの変数を表示するのは可能ですが、/etc/shadow からパスワードを導き出すのは不可能です(パスワードフィールドは不可逆に暗号化されてます)。

とりあえず足し算のループあたりから作るのが安全は無いでしょうか。

この回答への補足

色々なことをいっぺんにやろうとしすぎてました、知識が無いにも関わらず。まずuseraddからしっかりと理解してみます。あと環境変数はまだ不明なのですがファイルの頭に記述すればよいのでしょうか。
最初のCONTINUE=yのように

ループのほうはなんとかできました。
後半はこうなりました。
ehco "do you want to repear (y/n):"
read CONTINUE
done
ehco end run

補足日時:2008/04/04 02:10
    • good
    • 0

とりあえずスクリプトで自動化する前に, 「1人追加するために全てコマンドラインから入力する」ことを考えて, どのようなコマンドを入力しているかを確認した方がいいような気がするなぁ.


その上で, 複数人を追加するときに「どこがどのように変わるのか」を調べる, と.

この回答への補足

友達の力を借りつつなんとか出来ました
CONTINUE=y

while [ "$CONTINUE" != "n" ]

do

echo -e "enter new user name>>>\c"
read USERNAME
useradd -d /home/$USERNAME $USERNAME

passwd $USERNAME
echo
grep $USERNAME /etc/passws
echo
grep $USERNAME /etc/shadow
echo
echo -e "would you like to add another user(y/n):\c"
read CONTINUE
done
echo "action completed"

今回特に苦しんだのがreadコマンドでユーザ名入力するのが一番頭にこなければいけないことでした。

しかしここでまだひとつ疑問が沸いたのですが環境変数はいつも=で先に定義しなくてもよいのでしょうか?
このスクリプトを見るとUSERNAMEはreadコマンドで先に出てきてる意外は=で定義されていません。こうゆう定義の仕方もあるとゆうことでしょうか。

補足日時:2008/04/10 00:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!