我有这样的剧本:
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 (我使用Ubuntu14.04,转到Ubuntu12.04LTS部分)。当它完成安装部分时,我尝试配置它,以便它能够自动输入所有需要的信息(“用户名”、“密码”、“更新间隔”,以及“安装后您想运行什么东西(Y/N)吗?”)。
在我到达配置部分之前,安装进行得很好。这是输出的最后一行:
Enter-username Enter-password-for-Username _
(下划线是光标)
然后程序挂起,不接受输入。
当您手动执行时(或多或少,我没有将预置打印的字符串复制到字母中),情况就是这样的:
Enter-username Username
Enter-password-for-Username password
Enter-interval 30
Question(Y/N)? N
Install done现在,我知道用户名是正确输入的,因为它在请求密码时打印出来了。但是,当涉及密码部分时,它只是挂在那里。有什么想法吗?
发布于 2014-09-08 20:43:09
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_SCRIPThttps://unix.stackexchange.com/questions/154428
复制相似问题