Perlでの質問です。


Linuxの設定がいくつかあるのですが設定を1つのPerlにまとめたいと思ってます。
その中でパスワードの設定をpasswdコマンドで設定する部分があります。
perlでsystemを叩いて設定してやろうと思っておりますが
passwdをすると必ずnew passwordと出てきて2回入力をしないといけなくなります。
この返り値として受け取って直接パスワードを設定したいのですが
返り値を受け取る方法がわかりません。
なにか良い方法があれば教えていただければと思います。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2007/09/29 03:57:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:b-wind No.1

回答回数3344ベストアンサー獲得回数440

ポイント23pt

perlipc - Perl $B$N%W%m%;%94VDL?.(J

試していないけど、open でどうにかならないでしょうか。


perlipc - Perl $B$N%W%m%;%94VDL?.(J

入出力ともに必要なら、open2 や pipe を使う必要があるかもしれません。

id:quocard

ありがとうございます。

知らない関数もありましたので参考にさせていただきます。

2007/09/28 08:09:25
id:lunlumo No.2

回答回数107ベストアンサー獲得回数14

ポイント23pt

 openでは出来ないはずです。手間ですがExpectを使いましょう。

http://www-06.ibm.com/jp/developerworks/linux/020614/j_l-sc1.htm...

id:quocard

ありがとうございます。

Expectで確かに出来そうですね。

試してみます。

2007/09/28 08:09:49
id:practicalscheme No.3

回答回数157ベストアンサー獲得回数42

ポイント22pt

passwd --stdin <username> で直接新しいパスワードをpipeで送り込むことができますよ。root権限が必要ですが。

id:quocard

すでにadminでログインしている状態のときは

イメージ的には下記の感じでいいのでしょうか?

passwd --stdin admin || password

2007/09/28 08:11:37
id:tezcello No.4

回答回数460ベストアンサー獲得回数69

ポイント22pt

パスワードの設定を、useradd(または usermod)を使うと再入力の必要が無いです。

ただし、crypt() で暗号化済みである必要がありますが。


他のセットアッププログラム等にならって、bash で書いてみてはどうでしょう?シェルスクリプトの中に perl も織込めるので、全てを bash で組まなくてもいいですけど。

会話型のプログラムを実行する時は、expect を使うのが一般的だそうですが、ディストリビューション(あるいは選択した構成)によってはインストールされていないかも知れません。

id:quocard

bashは思いつきませんでした。

そちらでやるという手もありますね。

参考にさせていただきます。

2007/09/29 03:57:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません