繁体   English   中英

Bash 脚本。 输入用户名和密码

[英]Bash Script. Enter Username and Password

我正在尝试编写一个调用另一个脚本的脚本。 然后它应该填写用户名和密码。 不幸的是 spawn 没有调用我的脚本文件。

我创建了两个脚本,然后使用chmod +x filename.sh创建它们使其可执行。

vpn.sh

#! /usr/bin/expect

spawn ./startvpn.sh


#expect "[sudo] Passwort für niclas:"
#send "**********"

#expect "Enter Auth Username:"
#send '*************'

#expect "Enter Auth Password:"
#send "******"

启动vpn.sh

#! /bin/bash

sudo openvpn /etc/openvpn/ovpn_udp/se250.nordvpn.com.udp.ovpn

计划:

我在终端上运行 ./vpn,然后执行 startvpn。 这将建立与 Openvpn 的连接。

然后 vpn.sh 应该输入 Sudo 密码,然后是我的 NordVpn 用户名和密码。

奇怪的是,startvpn 从不运行。

我没有收到错误消息。

更新:

我更新了我的脚本。 现在它正在工作,只是没有输入密码。

vpn.sh 的更新版本

#!/usr/bin/expect -f

spawn sudo openvpn /etc/openvpn/ovpn_udp/se250.nordvpn.com.udp.ovpn


expect "Passwort für niclas:"
send "******\r"

expect "Username:"
send "**************\r"

expect "Password:"
send "****\r"

控制台输出是:

niclas@niclas-Inspiron-7347:~$ expect vpn.sh 
spawn sudo openvpn /etc/openvpn/ovpn_udp/se250.nordvpn.com.udp.ovpn
[sudo] Passwort für niclas: 
Fri Jun 28 21:03:03 2019 OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on May 14 2019
Fri Jun 28 21:03:03 2019 library versions: OpenSSL 1.1.1  11 Sep 2018, LZO 2.08
Enter Auth Username: niclas.buerger@web.de
Enter Auth Password: niclas@niclas-Inspiron-7347:~$   

如果我正常输入密码,它会填上******。 所以我真的不知道为什么它不起作用。 该命令与带有用户名的命令相同。

expect "[sudo] Passwort für niclas:"

在 "" 引号内, [] 将作为 tcl 命令替换语法。

您需要像这样使用严格的 expect {}:

expect {[sudo] Passwort für niclas:}

或引用 [] 像:

expect "\[sudo\] Passwort für niclas:"

或者只使用预期字符串的一部分:

expect "Passwort für niclas:"

或者只是这个:

expect "Passwort"

发送后你需要有另一条线。 这对我有用:

#!/usr/bin/expect -f

生成 openconnect ********

期待“用户名:”

发送 -- "********\\r"

期待“密码:”

发送 -- "****\\r"

相互影响

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM