• 締切済み
  • すぐに回答を!

AIX/HP-UXでパスワード変更シェルを作成したい

AIX/HP-UXで一括でパスワード変更を実行するシェルを 作成したいと考えております。 (最終的には複数サーバの複数ユーザのパスワードを  一括変更したい) そこで、AIXで以下の様なシェルを作成したのですが、 パスワード変更することができませんでした。 -------------------------------------- PASS=$1   "新パスワード USER=$2   "パス変するアカウント名 passwd $USER sleep 5 $PASS sleep 5 $PASS -------------------------------------- passwdコマンド自体は実行されるのですが、 その後の新パスワードが入力されておらず、 passwdコマンドタイムアウト後に新パスワードが 実行され、"新パスワードの文字列"が見つかりません。 となってしまいます。 インターネット等で検索した結果、linuxであれば expectコマンドを使用して、passwdコマンドを実行した 際に出力される「新パスワード:」を待ってから 入力すればよいということがわかったのですが、 linuxでexpectコマンドに相当するものを、AIXでは 見つけることができませんでした。 AIX/HP-UXにおいて、シェルスクリプトにてパスワード 変更を実現する方法をご存知の方がいましたら、 教えてください。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数2327
  • ありがとう数6

みんなの回答

  • 回答No.2

#1です。 少し調べてみたのですが、、、AIXはパスワード一括設定出来るコマンドはないようですね。 passwdコマンドも、パイプで入力を流し込んでやっても、どうやら内部で強制的に入力を端末に変えているようなので、結局どうやってもキーボードから入力するしかないようです。しかも、その辺の処理は正確に言うとpasswdコマンドではなくOS内部に組み入れられているようで、どうしようもなさそうです。 最終的には、自前でパスワード暗号化処理を行った上で、/etc/security/passwd ファイルを直接いじるくらいしか手がなさそうです。 がっかりさせるような回答で残念ですが、、、ご了承くださいませ。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご確認頂きましてありがとうございました。 シェルで無理ということなので、おとなしくC言語で システムコールを使ったものを作成しようと思います。 スキルが足りないかもしれませんが…

関連するQ&A

  • Bシェルでのユーザパスワード変更

    Bシェルのスクリプトを実行しユーザパスワードの変更を自動で 行いたいと思っています。 #!/bin/sh passwd 変更したいユーザ名 abcd ・・・(変更したい人のパスワードです[新しいパスワード用]) abcd ・・・(変更したい人のパスワードです[新しいパスワードの聞きなおし用]) このようにシェルを組み実行したところ コマンドプロンプトにてパスワードの入力 を聞かれてしまい、シェルにパスワードを 指定しているのですが認識してくれません。 この問題を解決するにはどのような シェルの記述方法があるのでしょうか。 ご回答よろしくお願いします。

  • シェルから起動するコマンドの一部をマスクする

    シェルから起動するコマンドの一部にパスワードなどのセキュリティ情報が含まれている場合、それをpsコマンドなどによって見えなくするには、一般にどのような手法が採られているのでしょうか。 例えば、 #!/bin/sh USER=hoge PASS=hogehoge foo -u $USER -p $PASS というシェルを実行した時に、psコマンドで見ると foo -u hoge -p hogehoge と出ては困るわけで、 foo XXXXXXXX とかいう表示にできるとありがたいです。XXXXXXの部分は、ユーザ名やパスワードが表示されなければ、どんな表示でもいいんですけど…。

  • Linux、HP-UXサーバの一括ログイン確認、一括パスワード変更を行

    Linux、HP-UXサーバの一括ログイン確認、一括パスワード変更を行いたい。 現在、サーバの保守・運用業務にて、アカウント貸出/返却を行っています。 アカウント貸出の際に、現状パスワードが正しいかをログオン確認して、 貸し出すと言う作業が発生し、 アカウントが返却されたら、パスワードを変更すると言う作業を行っております。 現状、上記2つの作業を普通に行えば、 (1)現状のパスワード確認(ログイン確認) TeraTermなどを使用してSSH2でログイン→ログインできるかを確認する。 (2)パスワード変更 アカウントの返却→passwdコマンドによりパスワードの変更→ 変更したパスワードでログインできるか確認 と言う作業を行っているのですが、現状、アカウントを貸し出す件数が 100件と言うように件数が多いので、上記を手動で行っていて、 非常に工数がかかっております。 (1)に関しては、 サーバ名1 アカウント名1 現状のパスワード1 サーバ名2 アカウント名2 現状のパスワード2 サーバ名3 アカウント名3 現状のパスワード3 の様なリストファイルを作り、それをTeraTermのマクロなどを実行して、 一括して、ログインを確認を行うとか、 (2)に関しては、 サーバ名1 アカウント名1 現状のパスワード1 新パスワード1 サーバ名2 アカウント名2 現状のパスワード2 新パスワード2 サーバ名3 アカウント名3 現状のパスワード3 新パスワード3 の様なリストファイルを作り、それをTeraTermのマクロなどを実行して、 一括して、パスワード変更を行うとか、 件数が多くても、一括で行えるようなツールやスクリプトは作成可能でしょうか。 そのようなツールがあれば、ぜひ教えて頂きたいです。 ・ちなみにOSは、Linux(RHEL)サーバと、HP-UXサーバがあります。 ・サーバ名は、hostsファイルによって、名前解決が出来るので、  単純にホスト名を指定できます。 ・サーバへのログインは、SSH2で行っております。 以上、よろしくお願いします。

  • 回答No.1

カテゴリはSolaris系ではなくBSD系の方がよろしいかと思います。 chpasswdというコマンドがあれば、そちらをお使いください。 なければ、下記のようにしてはどうでしょうか。 (sleep 5 ;echo $PASS ;sleep 5 ;echo $pass) |passwd $user これでうまくいかないようでしたら。。。ちょっと手元にAIXマシンがないので、月曜日までお待ちいただければ調べます。HP-UXについてはあいにく持ち合わせておりませんのでご勘弁ください。

共感・感謝の気持ちを伝えよう!

質問者からの補足

確認しましたが、chpasswdはありませんでした。 (linuxのコマンドですか?) ご教授頂きました方法でパスワード変更してみます。 またなにか判りましたら、大変お手数ですが、よろしくお願いします。

関連するQ&A

  • HP-UXでJAVAのAPよりUNIXのシェルを叩きシェル内のコマンドの戻り値を拾う方法を教えて下さい。

    お世話になります。 シェルの作成と戻り値の件で教えて頂きたいと思っております。 HP-UXでJAVAのAPよりUNIXのシェルを叩き、シェル内で実行したコマンドの戻り値をJAVAのAPで拾う事は出来るのでしょうか? ※コマンドはsophos(ウィルスソフト)のsweepコマンドを想定しています。sweepコマンドの戻り値を拾いJAVAのAP内でハンドリングしたいと考えています。 大変恐縮ですがご教授頂ければ幸いです。

  • PerlでUNIXのコマンドとパスワード入力

    ブラウザでユーザー名とパスワードを入力して passwdコマンドでパスワードを変更するプログラムを作っています。 プログラム中で $result=system("passwd $user"); と実行すると、マシンは New UNIX password: の状態になって、パスワードの入力を待っていると思うのですが、 この状態でどうやってパスワード$passをマシンに送ったらいいのか わかりません。キーボードから読み取るのではなく、 プログラムですぐにパスワードを送りたいのです。 標準入力にフラッシュする?というのでしょうか。 system($pass); としてもうまくいきません。 OSはFedoraCoreで、スクリプトはルート権限で動いています。 どうかご教示ください。

  • linuxのパスワード変更について

    LINUXがNISクライアントの場合ですが、通常NISパスワード変更はyppasswdで行いますすが、passwdコマンドでNISのパスワードの変更を行わせることは可能なのでしょうか。SOLARISでは、うまくいったのですが。。誰か試みた方がおられましたら教えていただけないでしょうか。

  • AIXのmailコマンドで送信者を変更するには?

    こんにちは。 AIX Version 4.3を使用しています。 mailコマンドで、送信者を明示する方法を探していますがうまくいきません。 例:AIXにユーザーuser01でログインする。   ↓   mailコマンド実行   ↓   From:user01@XXXXとなる   これを   From:user02@YYYY   と、まったく別のアドレスにしたい なにか方法をご存知の方がいらっしゃったら、 よろしくお願いします。

  • perlからsystemコマンド呼ばれる時のシェルについて

    HP-UX/perl4 で作成したスクリプトを、Linux(Red Hat)/perl5 へ移植するに当たって、system関数の動作が異なり困っています。 HP-UX では ksh をシェルとして使用していたため、perl からのsysytem関数で実行するsystemコマンドも、kshで動作するものを使っていました。Linuxでもログインシェルをkshに設定しました。 ところが、HP-UXで使っていたprintコマンドが使用できず、以下のエラーメッセージが出ます。 sh: print: command not found シェルはkshを指定していても、perlからsystem関数やバッククウォート`` でシステムコマンドを実行するときは、shが使われるようなのです。 perl内の記述は以下のとおりです。 system("print 'a'"); "print"の前に"ksh "をつけたり、"print"を"echo"に変えると、正しく動作します。 移植するperlの本数が多いのと、print以外にもこの問題が起きるかもしれませんので、できれば perl 内からのシステムコマンド実行時にもログインシェルとおなじ ksh で動くようにしたいのですが、どのようにすればよいのでしょうか? よろしくお願いいたします。

  • シェルプログラミングで文字列分割

    みなさま始めまして。 非常に困っておりますのでよろしくお願いします。 ユーザ名とパスワードが記述された、CSVファイルがあります。 このファイルから、ユーザ名とパスワードを読み出し コマンドに渡したいと考えております。 例: user1,pass1 user2,pass2 user3,pass3 user1がユーザ名、pass1がuser1のパスワードです。 このようなファイルを読み込み $command user1 pass1 のように、実行したいと考えています。 awkやperlのページを見てみましたが よくわかりませんでした。 よろしくお願いします。

  • rootパスワードの変更

    どうも、izumoです。 えーっと、turbolinux6.1を使用しております。 質問なんですが、rootのパスワードを変更しようと思い passwd root としたところ、古いパスワードでも、新しいパスワードでもログインできてしまいます。 コマンドの使用方法を間違えたのかと思い、もう一台の方で passwd としてみても、同じなんです。 パスワードを一つにする方法があれば、教えてください。 再インストールは、ほぼ不可能なんです。 よろしくお願いします

  • Linuxのシェル(sh,bash等)について

    Linux上でコマンドを実行するとき、その窓口となるものが、シェル(sh,bash)という認識です。 つまり、 (1)CUI環境でLinuxを操作する上で、シェル以外でコマンドを実行する事はありうるのか? (2)Windowsのコマンドプロンプトも一種のシェルと言えるか 以上、2点についてお教え頂きたいです。 宜しくお願いします。

  • AIX上でのアカウント操作ログ

    AIX v5.3上で実行されたユーザの追加、削除、アカウントロック及びパスワードリセットをログ等から一覧でレポートに出力したいと言う要望をお客様より受けているのですが、具体的な実現方法がわかりません。 上記動作のログは標準のsyslogで出力されるものでしょうか? もしくは、何らかのコマンドやシェル等の起動結果をリダイレクトしてログに落とす必要があるのでしょうか? AIXに触れるのが初めてなもので、質問させて頂きました。 ユーザアカウント操作に対するログの出力先をご存知でしたら、教えてください。 宜しくお願い申し上げます。

  • シェルスクリプのexpect部分のコマンド実行方法

    シェルスクリプトのexpect -c以降の記述について相談させて下さい。 特定機器へのログインを行う場合に以下のパターンがあります。 パターン1 user=user PW=pass1 パターン2 user=user PW=pass2 ※プロンプトはuser@としています パターン1でログインできた場合はcommand Aを実行して終了 パターン2でログインできた場合はcommand Aを実行して終了 パターン1も2もログインできない場合即終了を期待して下記プログラムを作成しました。 expect -c " -略- expect \"Login:\" send \"user\n\" expect \"Password:\" send \"pass1\n\" sleep 1 expect { \"Login incorrect\" { send \"user\n\" expect \"Password\" send \"pass2\n\" expect { \"Login incorrect\" { exit 1 } \"user@\" { send \"command A\n\" expect \"user@\" send \"quit\n\" exit 1 } } } } \"user@\" { send \"command A\n\" expect \"user@\" send \"quit\n\" } } interact " しかし、上記のbraceでかこったsend部分がうまくコマンドとして実行されません。 別ファイルで#!/usr/bin/expectexpectの記述で記載すると動作する点は確認しています。 #!/usr/bin/bashにおいてexpect -cから記載するとbraceはそもそも使えないのでしょうか。 無知な質問かもわかりませんがお気づきの点があればご指摘いただけないでしょうか。 よろしくお願いします。