【问题标题】:Bash Script. Enter Username and PasswordBash 脚本。输入用户名和密码
【发布时间】:2019-11-02 12:53:01
【问题描述】:

我正在尝试编写一个调用另一个脚本的脚本。然后它应该填写用户名和密码。不幸的是 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 "******"

startvpn.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:~$   

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

【问题讨论】:

  • 将密码存储在文本文件中非常不安全。
  • 说了这么多,你还记得“回车”吗? send "password\r"
  • 感谢您的回答。该脚本仅在我的 PC 上本地运行,因此它是我将其存储在 txt 文件中的最简单解决方案。我错过了进入,这是正确的。谢谢。但主要问题是当我使用 ./vpn.sh 执行 vpn.sh 时,我的 startvpn.sh 脚本永远不会执行。

标签: bash shell expect


【解决方案1】:
expect "[sudo] Passwort für niclas:"

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

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

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

或引用 [] 之类的:

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

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

expect "Passwort für niclas:"

或者只是这样:

expect "Passwort"

【讨论】:

  • 谢谢!更改。知道它的工作,但不输入密码。请参阅更新的问题。
【解决方案2】:

你需要在发送后有另一行。这对我有用:

#!/usr/bin/expect -f

生成 openconnect ********

期望“用户名:”

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

期待“密码:”

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

互动

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-27
    • 2018-07-07
    • 2012-05-17
    • 1970-01-01
    • 2016-07-08
    • 2015-09-27
    • 2018-07-05
    • 1970-01-01
    相关资源
    最近更新 更多