From: uday <udh...@gm...> - 2013-09-16 06:40:33
|
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 |