1

我正在尝试使用 bash 自动启动特定服务

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

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

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

http://pastebin.com/qWHX7Di5

我已经尝试过回声,但它似乎不起作用

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

这甚至可能吗?

4

2 回答 2

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手册页

于 2013-02-04T17:03:41.203 回答
0

您可以尝试使用here-doc

/path/to/init.d << END
$username
$password
END
于 2013-02-04T17:05:37.630 回答