在bash脚本中将字符串写入标准输入

时间:2013-02-04 16:46:06

标签: bash shell

我正在尝试使用bash

自动启动特定服务

当使用init.d(/etc/init.d/openvpn.custom)启动服务时,它会使用用户名然后输入密码 - 然后连接

使用已安装的版本无法使用auth-user-pass from-file,并且由于依赖性而无法升级

所以我正在尝试编写一个执行init.d脚本的简单bash脚本,稍微睡一会儿,输入用户名,返回,稍微睡一觉,输入密码 - 你就得到了流程。

喜欢http://pastebin.com/qWHX7Di5

我已经尝试过echo,但它似乎有效

这是针对一个相当传统的防火墙,我被要求保持连接。

这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

我会使用expect代替bash。如果您还需要执行其他任务,您仍然可以在bash内拨打电话。

expect中,脚本将类似于以下内容(未经测试):

#!/usr/bin/expect -f
set username "username"
set password "password"

spawn /etc/init.d/openvpn.custom start
expect "Username:"
send "$username\r"
expect "Password:"
send "$password\r"
expect eof

您想要更改expect "Username:"& expect "Password:"行以匹配init.d脚本输出的实际登录提示。

有关详细信息,请参阅expect man page

答案 1 :(得分:0)

您可以尝试使用here-doc

/path/to/init.d << END
$username
$password
END