通过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

相关内容