このスクリプトがあります。
cd /usr/local/src/
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar xf noip-duc-linux.tar.gz
cd noip-2.1.9-1/
make install <<END_SCRIPT
Username
password
30
N
END_SCRIPT
~によるとこのガイドNoip DUCをインストールする必要があります(私はUbuntu 14.04を使用しています。Ubuntu 12.04 LTSセクションにアクセスしてください)。インストール部分に達したら、必要なすべての情報(「ユーザー名」、「パスワード」、「更新間隔」、および「インストール後に何かを実行しますか(はい/いいえ)?」)。
構成部分に達するまで、設置は順調に進みました。以下は出力の最後の行です。
Enter-username Enter-password-for-Username _
(下線はカーソルです)
これによりプログラムが中断され、入力は許可されません。
手動で行ったときの外観は次のとおりです(ほとんどプリセットされた印刷文字列を文字にコピーしませんでした)。
Enter-username Username
Enter-password-for-Username password
Enter-interval 30
Question(Y/N)? N
Install done
パスワードを尋ねると、ユーザー名が印刷されるため、ユーザー名が正しく入力されたことがわかります。しかし、パスワードの部分に関してはそれに依存します。どんなアイデアがありますか?
答え1
このexpect
プログラムはまさにこれらの状況のために設計されています。 noip クライアントで使用するには、次のようにスクリプトを調整します。
#!/usr/bin/bash
cd /usr/local/src
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
tar xf noip-duc-linux.tar.gz
cd noip-2.1.9-1/
/usr/bin/expect <<END_SCRIPT
spawn make install
expect "Please enter the login/email*" { send "Username\r" }
expect "Please enter the password for user*" { send "password\r" }
expect "Please enter an update interval*" { send "30\r" }
expect "Do you wish to run something at successful update*" {send "N\r" }
END_SCRIPT