shスクリプトによるnoipのインストール

shスクリプトによるnoipのインストール

このスクリプトがあります。

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

関連情報