我创建了一个Bash脚本,它使用一个expect脚本来自动化ssh logins.The脚本,连接到多个服务器并运行一些命令。bash脚本提示输入一次登录凭据。
我想加入一个功能,其中脚本终止,如果第一个服务器登录失败,以避免脚本检查下一个服务器导致用户帐户被锁定。帐户锁定连续3次登录失败,脚本尝试连接的服务器数量超过3个。
这是调用expect脚本的bash脚本中的代码片段。
countu=0
for servername in $(cat $linux_host_list)
do
./script.expect $LUSERNAME $LPASS $servername Linux >
当Linux机器$IP在登录后询问密码时,以下expect脚本工作正常
但在某些情况下,某些Linux机器不需要ssh的密码(我们可以不使用密码登录),
因此我需要更改我的expect脚本,以便支持没有密码的计算机
请建议如何适合我的期望脚本,以支持机器与密码和机器没有密码
* target of the following expect script is to check the hostname on remote Linux machine
expect_test=`cat << EOF
set timeout -1
spawn ssh $IP hostna
我正在尝试通过expect完成一项简单的工作。我想在Linux虚拟机上使用" ssh -keygen“命令创建ssh密钥。我下面的expect代码看起来很简单,但它并不起作用:
#!/usr/bin/expect
spawn ssh-keygen -t rsa
expect -exact "Enter file in which to save the key (/root/.ssh/id_rsa): "
send -- "\r"
expect -exact "Enter passphrase (empty for no passphrase)
我想使用Tcl/expect自动化以下交互
[root@mgmt NAS]# ssh -q -p 8022 -l user 10.1.1.1
Password:
HP Network Automation Version 9.10.02
Type "HELP connect" to see how to connect to a device.
Type "HELP" to view a list of available commands.
NA>connect 10.1.1.2
WARNING: You do not have an appr
我有一个类似于此的expect会话:
spawn myapp
stratos> list-tenants
Available Tenants:
+-----------+-----------+-------------+--------+---------------------------+
| Domain | Tenant ID | Email | State | Created Date |
+-----------+-----------+-------------+--------+-----------------------
我正在尝试安装一个软件,它是一个shell脚本文件。我正在使用expect进行静默安装。
在软件安装过程中,有一条奇怪的行,提示转到下一行,如下所示。
ENTER AN ABSOLUTE PATH, OR PRESS <ENTER> TO ACCEPT THE DEFAULT
:
所以我已经尝试了这两个选择,但这是行不通的!
1. expect " : " { send "/home/tester/IDir\r" }
2. expect "ENTER AN ABSOLUTE PATH, OR PRESS <ENTER>
我试图将2个预编译的正则表达式传递给python的telnetlib expect方法,但是我得到: TypeError: can't use a string pattern on a bytes like object。示例代码如下:
import re,sys,telnetlib
tn=telnetlib.Telnet('localhost',23,10)
re_list=[re.compile("login:",re.I),re.compile("username:",re.I)]
print("re_list:
我在TCL/Expect上做了大量的阅读,并编写了下面的脚本来连接到我的RPi-Kali-Linux盒上的通讯端口。
#!/usr/bin/expect -f
set timeout -1
;#set the portID and open it for reading and writing
set portID [open /dev/ttyUSB0 r+]
set baud 9600
;#Configure the port with the baud rate
;#and dont block on read, dont buffer output
fconfigure $port
我正在编写Python脚本,我很难弄清楚如何获得我发送的命令的输出,并将其存储在变量中,但是对于该命令的整个输出,我只想在某个单词之后存储一个特定行的其余部分。
例如,我有一个命令,它输出数百行代码,这些行都代表特定产品的某些细节。
Color: Maroon Red
Height: 187cm
Number Of Seats: 6
Number Of Wheels: 4
Material: Aluminum
Brand: Toyota
#and hundreds of more lines...
我想解析我发送的命令的整个输出,它打印上面的细节,并且只将产品的材料存储在一个变量中。
现在我
这是我希望登录到远程server.where的脚本,我要求用户输入密码。
#!/usr/bin/expect -f
#Grabbing Password to be used in script further
stty -echo
send_user -- "Enter the Password: "
expect_user -re "(.*)\n"
send_user "\n"
stty echo
set pass $expect_out(1,string)
#Loggin into the Gateway as Normal user
#
我正在尝试创建一个通过ssh登录的脚本,但为了使它变得更难,我必须先将ssh放到一个服务器上,然后再将ssh转到另一个服务器上才能到达我想要访问的服务器。到目前为止,我所拥有的代码可以很好地将我带到第一个服务器,但是当它试图进入下一个服务器时却无法工作。
#! /usr/bin/expect -f
# set servers to ssh into
set server1 "foo"
set server2 "bar"
# get username
send_user -- "Enter username: "
expect_user -re
我刚开始使用expect。我正在运行以下代码以从服务器获取令牌:
set timeout 20
set token ""
sleep 1
spawn ssh -l $serveruser1 $serverip
# -- is used to disable the interpretion of flags by Expect.
expect {
-re "OK" {
send_user "** Enter command to get the token. **\n"
send --