質問: 対話型のコマンドで入力する値をスクリプトに盛り込んで自動化したい 今まで変更した各種設定を一気に行うシェルスクリプトを作成して、サーバーを再セットアップしてもすぐに今までどおり使えるようにしようとしています。 スクリプト中に対話型のコマンドを記述すると、そこで処理が中断して、入力待ち状態になってしまいます。 しかし、入力値は大抵いつも同じですので、これをスクリプト中に記述して、処理が中断する回数を極力減少させたいと考えています。 passwdコマンドをechoコマンドと組み合わせて次のようにやってみました。 # echo "xxx xxx" | passwd user しかし次のように失敗してしまいました。 changing password for user user. new password: retype new password: new password: new password: passwd: conversation error エラーメッセージより再入力がうまくできていないようです。 さらに3回目の入力が求められていますが、これも謎です。 このような対話型のコマンドとその入力値を全部シェルスクリプトに記述するなどして、処理を自動化する方法をご存知の方は、ぜひ教えてください。
回答: > sshで別のサーバーにログインして、そのサーバーの任意ファイルに行を追加するという一連の処理を自動化することでした。 sshには秘密鍵認証という方法があって、秘密鍵を交換しておくことで、パスワードを入力しなくても相手のサーバに対してログインすることが出来ます。 簡単に言うと、ログインを行う側(ホストa)で秘密鍵と公開鍵を作成(ssh-keygen)し、公開鍵をログインされる側(ホストb)に対して公開鍵(~/.ssh/id_dsa.pub)を送信します。hosta----(ssh)---->hostb 相手側ホストに対して何かしたければ、これでいいのですが、単純にファイルをコピーしたければ scp も使えます。