From: uday <udh...@gm...> - 2013-09-16 06:48:01
|
I agree Robin. Sending this command doest require expect. however, this is just begining...we have planned to install/uninstall/upgrades packages based on previous command execution output. so we have arrived at perl expect.... On Mon, Sep 16, 2013 at 12:10 PM, uday <udh...@gm...> wrote: > 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 > -- Cheers Udhaya.D |