Articles of 期望

否则期望string匹配

我想用telnet发送一个命令后可能会返回不同的结果让我说,像以下3种可能性 1 successful 2 normal 3 there are something wrong…blabla you can refer to ….blabla expect{ "successful" {} "normal" {} #here, for the third possibility, I want to use something like "else", so what should I put here? thanks! }

交叉编译期望用于ARM

我已经下载expect5.4 。 我试图交叉编译ARM(PandaBoard)运行精简版的Linux。 在configuration的初始设置,我尝试 Shell$ ./configure –host=ARM configure: WARNING: If you wanted to set the –build type, don't use –host. If a cross compiler is detected then cross compile mode will be used. checking for correct TEA configuration… ok (TEA 3.9) configure: configuring expect 5.45 checking for Tcl configuration… found /home/user1/scripts/tcl8.6.0/unix/tclConfig.sh checking for existence of […]

在expect脚本中包含#include

所以我在使用期望脚本制作TestCases时遇到了麻烦,我有10个TestCases,它们都以相同的“函数”(例如login和注销或closures某些标志)开始和结束,是否有可能包含它们或从我的远程执行它们脚本,像spawn login.exp甚至更好地把他们的function? TC01.exp #!/usr/bin/expect -f set timeout 5 #example of getting arguments passed from command line.. #not necessarily the best practice for passwords though… set server [lindex $argv 0] set user [lindex $argv 1] set pass [lindex $argv 2] set no [lindex $argv 3] set counter 0 # connect to server via ssh, login, and […]

无法通过期望SSH的脚本bash命令

我试图将一组命令推送到多个远程主机。 我可以单独使用以下内容: ssh user@remoteHost "bash -s" <./commands.sh 我可以把它放到一个循环中,但是我被困在密码inputn次。 禁用SSHconfiguration文件中的密码提示不是我的select。 我试图在一个循环内使用期望,但我无法得到它的工作。 #!/bin/bash HOSTS="host1 host2" read -sp "Password: " PASSWORD for HOST in $HOSTS; do expect -c " spawn /usr/bin/ssh user@$HOST "bash -s" <./commands.sh expect_before { "*yes/no*" {send "yes"\r;exp_continue}} expect { "*Password*" {send $PASSWORD\r;interact}} exit" done 我得到以下错误: spawn /usr/bin/ssh root@host1 bash expect: invalid option — 's' usage: […]

获取使用Net :: SSH :: Expect的exec执行的命令的退出状态

我正在运行以下脚本: #!/usr/local/bin/perl -w use strict; use warnings; use Net::SSH::Expect; my $ssh = Net::SSH::Expect->new(host=>"xxx.xxx.xxx.xxx",password=>"xxxxxxx", user=>"root" ,timeout=>3 ); $ssh->login(); $ssh->exec("stty -echo"); print "Connection Established\n"; my ($out) = $ssh->exec("rpm -ivh xxx"); print "\n\nOUTPUT: $out\n"; #$ssh->send("echo $?"); ($out) = ($ssh->get_expect())->exitstatus(); print "\n\nEXIT STATUS: $out\n"; 运行这个,我不能得到我执行的“rpm -ivh …”命令的退出状态。 我是Perl的新手,请帮我解决这个问题。

从expect / tcl传递多个参数到perl脚本

我在下面的脚本中遇到一些麻烦。 proc checkUser {userip} { set search "show users | include " set search_cmd [concat $search $userip] exp_send "$search_cmd\r" expect { -re "Vi.*" { set oui "uei.opennms.org/services/passiveServiceStatus" set host "localhost" set iface "–interface $userip" set service "–service Test" set parm1 "–parm 'passiveNodeLabel [getNodeName $userip]'" set parm2 "–parm 'passiveIpAddr $userip'" set parm3 "–parm 'passiveServiceName Test'" set […]

TCL,预计:多个文件与SCP

我能够传输文件与SCP和期望,现在我试图一次上传几个文件: #!/usr/bin/expect -f # Escapes spaces in a text proc esc text { return [regsub -all {\ } $text {\\&}] } # Uploads several files to a specified server proc my_scp_multi {ACCOUNT SERVER PW files newfolder} { set timeout 30 send_user — "\n" spawn scp $files $ACCOUNT@$SERVER:[esc $newfolder] match_max 100000 # Look for password prompt […]

使用'expect'命令远程将密码传递给SSH运行脚本

我需要创build一个bash脚本,可以在一批机器上远程运行另一个脚本。 为此,我正在通过SSH传递一个脚本。 ssh -p$port root@$ip 'bash -s' < /path/to/script/test.sh 我以为它会使用我的RSA密钥,但我得到错误: "Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)" 我尝试使用sshpass无济于事。 所以我的下一个解决scheme是使用expect。 我从来没有用过期望,我很积极,我的语法是离开的。 ssh -p$port root@$ip 'bash -s' < /path/to/script/test.sh /usr/bin/expect <<EOD expect "password" send "$spass\n" send "\n" EOD 我有root权限访问所有机器,任何解决scheme只要代码仍然在bash中就可以。 只要记住,这将在一个从父脚本传递的全局variables($ spass,$ ip,$ port等)的循环中完成。

期望 – 如何在一个交互循环中执行多个正则expression式匹配?

我试图在一个交互会话期间在同一屏幕输出上执行多个正则expression式匹配。 用下面的代码,我得到错误消息: “不能使用-o不止一次” 最终,我想从输出的每个屏幕提取几个小数据variables,使用这个问题中详述的几个正则expression式。 是我想要做什么,如果是这样的话是什么语法? interact { #… #… actions during interact loop to perform with variables extracted #… #variable extraction from output ———————————— -o -nobuffer -re {(\[1;14H[a-zA-Z0-9]{1})[0-9]{5}} { #get po number set poraw $interact_out(0,string) #get just po out set po [string range $poraw 6 11] #switch to lowercase set po [string tolower $po] #send_user […]

在linux shell脚本中使用多个命令解释器

我想用一个shell脚本来执行一堆命令。 其中一些命令包括:​​scp,cd,tar,date,expect,spawn。 当我声明#!/ bin / sh或#!/ bin / bash时,没有一个期望的命令可以工作 – 这是可以理解的。 当我声明#!/ usr / bin / expect -f然后cd,tar,date不起作用 – 我想这也是可以预料的(不是双关的)。 是否可以使用单个解释器来使用所有这些命令,或者我可以在这个过程中声明另一个命令吗? 我潜入子弹,但没有成功。