|
From: Roland G. <rgi...@cp...> - 2013-09-16 08:46:29
|
Try setting $Expect::Exp_Internal = 1;
It will tell you what Expect is trying to match, what it is receiving at
what time and actually matching. This should help you figuring out what
does not work.
2013/9/16 uday <udh...@gm...>
> Thanks a lot for your time and recommendations Robin... I have tried but
> result is same Robin...
> Please find latest code below....i have my script ready but without making
> this change i cant roll it out :( ....
>
> Hi everyone, please share your thoughts and opinion on this
>
> while($i <= $#fields) {
> print "\n";
> print"TERMINAL: $fields[$i]\n";
> $exp->send("$fields[$i]\r");
> #$exp->send("\r");
> $exp->expect(30,'-re','root@');
> #$read = $exp->exp_before();
> print "\n";
> $i++;
> }
>
>
>
> On Mon, Sep 16, 2013 at 8:11 AM, Robin Lee Powell <
> rlp...@di...> wrote:
>
>> You really don't need expect for this; just use an ssh key and send
>> the commands like "ssh host 'cat /etc/redhat-release'".
>>
>> In general, you shouldn't use Expect unless you have no choice.
>>
>> As to your actual code, the problem is that you send a bunch of commands
>> very
>> fast without waiting for responses.
>>
>> After:
>>
>> > $exp->send("$fields[$i]\r");
>>
>> put something like:
>>
>> $exp=>expect(10, "root@");
>>
>> to wait for the next prompt.
>>
>> -Robin
>>
>> On Sun, Sep 15, 2013 at 09:55:19PM +0530, uday wrote:
>> > *Hi perl experts,*
>> >
>> > *I'm pretty new to perl expect and passing commands to client server and
>> > printing execution status in terminal. If you look at my output, I am
>> > executing “*cat /etc/redhat-release” but actual execution happens at the
>> > end of code and prints the output at the end of execution. I would like
>> to
>> > get actual execution of “cat /etc/redhat-release” output displayed in
>> > terminal after “TERMINAL: cat /etc/redhat-release” output. Could you
>> please
>> > help me to fix ASAP? Highly appreciated for early reply.
>> >
>> > * *
>> >
>> > * **INPUT FILE:*
>> >
>> > * ** [root@server-1 ~]# cat "cs3.csv"*
>> >
>> > *192.18.16.19,root,conley,cat /etc/redhat-release,ls,date*
>> >
>> > * [root@server-1 ~]#*
>> >
>> > * *
>> >
>> > *OUTPUT:*
>> >
>> > [root@server-1 ~]# perl temp4.pl
>> >
>> >
>> >
>> > Testcase no:1
>> >
>> > ++++++++++++++++++++++++++++
>> >
>> >
>> >
>> > Test case details: 192.18.16.19,root,conley,cat
>> /etc/redhat-release,ls,date
>> >
>> > Logged into 192.18.16.19
>> >
>> > root@192.18.16.19's password:
>> >
>> > Last login: Sat Sep 14 02:31:25 2013 from server-1.lss.emc.com
>> >
>> > TERMINAL: cat /etc/redhat-release
>> >
>> > TERMINAL: ls
>> >
>> > TERMINAL: date
>> >
>> > [root@client197 ~]#
>> >
>> > [root@client197 ~]#
>> >
>> > [root@client197 ~]# cat /etc/redhat-release
>> >
>> > Red Hat Enterprise Linux Server release 5.9 (Tikanga)
>> >
>> > [root@client197 ~]#
>> >
>> > [root@client197 ~]# ls
>> >
>> > anaconda-ks.cfg install.log
>> > test.txt
>> >
>> > Desktop install.log.syslog
>> >
>> > LINUX-5.7.1.00.00-029.RHEL5.x86_64.rpm SSL
>> >
>> > [root@client197 ~]#
>> >
>> > [root@client197 ~]# date
>> >
>> > Sun Sep 15 04:23:42 EDT 2013
>> >
>> > [root@client197 ~]# exit
>> >
>> > logout
>> >
>> > Connection to 192.18.16.19 closed.
>> >
>> >
>> >
>> > *ACTUAL CODE:*
>> >
>> > [root@server-1 ~]# cat /perlupdate/test/csv/temp4.pl
>> >
>> > #!/usr/bin/perl
>> >
>> > use Expect;
>> >
>> > use warnings;
>> >
>> > #use strict;
>> >
>> > $timestamp = getLoggingTime();
>> >
>> > $l_file = "/perlupdate/test/csv/log/$timestamp.log";
>> >
>> >
>> >
>> > # Use the open() function to create the file.
>> >
>> > unless(open FILE, '>' .$l_file) {
>> >
>> > # Die with error message
>> >
>> > # if we can't open it.
>> >
>> > die "\nUnable to create $l_file\n";
>> >
>> > }
>> >
>> > close (FILE);
>> >
>> >
>> >
>> > my $file = "cs3.csv";
>> >
>> > open(my $data, '<', $file) or die "Could not open '$file' $!\n";
>> >
>> > my $lnnum = 0;
>> >
>> > while (my $line = <$data>) {
>> >
>> > $exp=new Expect;
>> >
>> > $exp->send("\r");
>> >
>> > $lnnum++;
>> >
>> > print "\n";
>> >
>> > print "Testcase no:$lnnum \n";
>> >
>> > print "++++++++++++++++++++++++++++ \n";
>> >
>> > print "\n";
>> >
>> > print "Test case details: $line\n";
>> >
>> > print "\n";
>> >
>> > chomp $line;
>> >
>> > my @fields = split "," , $line;
>> >
>> >
>> >
>> > $exp-> raw_pty(1); #eliminates echo back to expect
>> >
>> > $exp-> log_file("$l_file");
>> >
>> > $exp-> debug(0);
>> >
>> > $exp->spawn("ssh $fields[0] -l $fields[1]") or die "Cannot connect
>> > $fields[0]: $!\n";
>> >
>> > print"Logged into $fields[0]\n";
>> >
>> > $exp->expect(10, "password");
>> >
>> > $exp->send("$fields[2]\r");
>> >
>> > $exp->expect(30, "Last");
>> >
>> > $exp->send("\r");
>> >
>> > $i=3;
>> >
>> > while($i <= $#fields) {
>> >
>> > print "\n";
>> >
>> > print"TERMINAL: $fields[$i]\n";
>> >
>> > $exp->send("\r");
>> >
>> > $exp->send("$fields[$i]\r");
>> >
>> > print "\n";
>> >
>> > $i++;
>> >
>> > }
>> >
>> > $exp->send("exit\r");
>> >
>> > #$exp->send("\r")
>> >
>> > $exp->soft_close();
>> >
>> > }
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > sub getLoggingTime {
>> >
>> >
>> >
>> > my
>> > ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
>> >
>> > my $nice_timestamp = sprintf ( "%04d_%02d_%02d_%02d_%02d_%02d",
>> >
>> >
>> $year+1900,$mon+1,$mday,$hour,$min,$sec);
>> >
>> > return $nice_timestamp;
>> >
>> > }
>> >
>> >
>> >
>> > [root@server-1 ~]#
>> >
>> >
>> >
>> >
>> >
>> > --
>> > Cheers
>> > Udhaya.D
>>
>> >
>> ------------------------------------------------------------------------------
>> > LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
>> > 1,500+ hours of tutorials including VisualStudio 2012, Windows 8,
>> SharePoint
>> > 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack
>> includes
>> > Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13.
>> >
>> http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
>>
>> > _______________________________________________
>> > Expectperl-discuss mailing list
>> > Exp...@li...
>> > https://lists.sourceforge.net/lists/listinfo/expectperl-discuss
>>
>>
>> --
>> http://intelligence.org/ : Our last, best hope for a fantastic future.
>> .i ko na cpedu lo nu stidi vau loi jbopre .i danfu lu na go'i li'u .e
>> lu go'i li'u .i ji'a go'i lu na'e go'i li'u .e lu go'i na'i li'u .e
>> lu no'e go'i li'u .e lu to'e go'i li'u .e lu lo mamta be do cu sofybakni
>> li'u
>>
>
>
>
> --
> Cheers
> Udhaya.D
>
>
> ------------------------------------------------------------------------------
> LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
> 1,500+ hours of tutorials including VisualStudio 2012, Windows 8,
> SharePoint
> 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack
> includes
> Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13.
> http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
> _______________________________________________
> Expectperl-discuss mailing list
> Exp...@li...
> https://lists.sourceforge.net/lists/listinfo/expectperl-discuss
>
>
|