Linuxの設定がいくつかあるのですが設定を1つのPerlにまとめたいと思ってます。
その中でパスワードの設定をpasswdコマンドで設定する部分があります。
perlでsystemを叩いて設定してやろうと思っておりますが
passwdをすると必ずnew passwordと出てきて2回入力をしないといけなくなります。
この返り値として受け取って直接パスワードを設定したいのですが
返り値を受け取る方法がわかりません。
なにか良い方法があれば教えていただければと思います。
perlipc - Perl $B$N%W%m%;%94VDL?.(J
試していないけど、open でどうにかならないでしょうか。
perlipc - Perl $B$N%W%m%;%94VDL?.(J
入出力ともに必要なら、open2 や pipe を使う必要があるかもしれません。
openでは出来ないはずです。手間ですがExpectを使いましょう。
http://www-06.ibm.com/jp/developerworks/linux/020614/j_l-sc1.htm...
ありがとうございます。
Expectで確かに出来そうですね。
試してみます。
passwd --stdin <username> で直接新しいパスワードをpipeで送り込むことができますよ。root権限が必要ですが。
すでにadminでログインしている状態のときは
イメージ的には下記の感じでいいのでしょうか?
passwd --stdin admin || password
パスワードの設定を、useradd(または usermod)を使うと再入力の必要が無いです。
ただし、crypt() で暗号化済みである必要がありますが。
他のセットアッププログラム等にならって、bash で書いてみてはどうでしょう?シェルスクリプトの中に perl も織込めるので、全てを bash で組まなくてもいいですけど。
会話型のプログラムを実行する時は、expect を使うのが一般的だそうですが、ディストリビューション(あるいは選択した構成)によってはインストールされていないかも知れません。
bashは思いつきませんでした。
そちらでやるという手もありますね。
参考にさせていただきます。
ありがとうございます。
知らない関数もありましたので参考にさせていただきます。