使用expect从bash脚本登录VPN

时间:2012-07-02 18:54:31

标签: bash login expect openvpn

我使用以下内容从控制台连接到VPN:

sudo openvpn my.conf
[sudo] password for user:
Enter Auth Username:my_user
Enter Auth Password:

我不在乎手动输入admin pwd,但我想自动化vpn auth,我认为我需要做到这一点,但我不知道如何使用它而我从不编码了一个bash脚本。

有人可以使用expect向我展示一个简单的bash脚本,所以我可以使用它吗?

3 个答案:

答案 0 :(得分:4)

类似的东西(未经测试)

#!/bin/usr/expect -f
spawn sudo openvpn my.conf
expect -r "\[sudo\] .*\: " {
    send "my_ownpassword\n"
}
expect "Enter Auth Username:" {
    send "my_user\n"
}
expect "Enter Auth Password:" {
    send "my_vpnpassword\n"
}
interact

答案 1 :(得分:0)

或者也许是这样:

#!/usr/bin/expect -f  

# Constants  
set user "my_user"  
set pass "blablabla"  
set sudo_pass "blablabla"  
set timeout -1  

# Options  
match_max 100000  
log_user 0  

# Access to device  
spawn sudo openvpn my.conf
expect "[sudo]*"  
send -- "$sudo_pass\r"  

expect "*?sername:*"  
send -- "$user\r"

expect "*?assword:*"  
send -- "$pass\r"

interact
close

答案 2 :(得分:0)

!/ usr / bin / expect -f

可信

设置用户“用户名”
设置通行证“密码”

spawn openvpn file.ovpn

期待“?sername:
发送 - “$ user \ r”

期待“?assword:
发送 - “$ pass \ r”

相互作用 靠近