我可以将 bash 个参数传递给 expect 环境吗?
Can I pass bash arguements to an expect environment?
我需要自动与需要我输入密码的服务器建立 openvpn 连接。
我可以用 expect 做到这一点,但我不想在脚本中以纯文本形式保留密码。
我发现 encpass 可以帮助加密密码,我只需要获取它并获取密码的加密版本。
当我尝试将未加密的密码传递给期望时,问题就来了。据我了解,expect 和 bash 是 2 个不同的环境,bash 不能 运行 expect。到目前为止我有以下内容:
#!/usr/bin/env bash
source encpass.sh
password=$(get_secret)
{
/usr/bin/expect <<EOF
spawn openvpn /home/pi/client.ovpn
expect "Enter Private Key Password:"
send $password
interact
EOF
}
最终结果是 运行 这个,它启动了 VPN,脚本在提示中输入了密码。
如果有更简单的方法,请告诉我。
我尝试仅使用 openvpn 和 --auth-user-pass 开关将其自动化,该开关指向其中包含密码的文件,但我也无法正常工作。
两个想法spring要记住:
如果要将期望代码嵌入到 shell 脚本中,请使用环境
传递值,并使用引用的 heredoc 来避免引用地狱(不要忘记
为发送命令“按回车键”)
#!/usr/bin/env bash
source encpass.sh
password=$(get_secret)
export password
/usr/bin/expect <<'EOF'
spawn openvpn /home/pi/client.ovpn
expect "Enter Private Key Password:"
send "$env(password)\r"
interact
EOF
一切尽在期待
#!/usr/bin/env expect
set password [exec bash -c {source encpass.sh && get_secret}]
spawn openvpn /home/pi/client.ovpn
expect "Enter Private Key Password:"
send "$password\r"
interact
我需要自动与需要我输入密码的服务器建立 openvpn 连接。
我可以用 expect 做到这一点,但我不想在脚本中以纯文本形式保留密码。
我发现 encpass 可以帮助加密密码,我只需要获取它并获取密码的加密版本。
当我尝试将未加密的密码传递给期望时,问题就来了。据我了解,expect 和 bash 是 2 个不同的环境,bash 不能 运行 expect。到目前为止我有以下内容:
#!/usr/bin/env bash
source encpass.sh
password=$(get_secret)
{
/usr/bin/expect <<EOF
spawn openvpn /home/pi/client.ovpn
expect "Enter Private Key Password:"
send $password
interact
EOF
}
最终结果是 运行 这个,它启动了 VPN,脚本在提示中输入了密码。
如果有更简单的方法,请告诉我。
我尝试仅使用 openvpn 和 --auth-user-pass 开关将其自动化,该开关指向其中包含密码的文件,但我也无法正常工作。
两个想法spring要记住:
如果要将期望代码嵌入到 shell 脚本中,请使用环境 传递值,并使用引用的 heredoc 来避免引用地狱(不要忘记 为发送命令“按回车键”)
#!/usr/bin/env bash source encpass.sh password=$(get_secret) export password /usr/bin/expect <<'EOF' spawn openvpn /home/pi/client.ovpn expect "Enter Private Key Password:" send "$env(password)\r" interact EOF
一切尽在期待
#!/usr/bin/env expect set password [exec bash -c {source encpass.sh && get_secret}] spawn openvpn /home/pi/client.ovpn expect "Enter Private Key Password:" send "$password\r" interact