[TriLUG] Perl. Help. Needed.
William Sutton
william at trilug.org
Wed Mar 11 15:36:10 EDT 2009
What happens if you
print CONFIG $some_line;
print $some_line;
That should accomplish the goal of printing the line to the CONFIG file
-and- printing it to the screen. Unless, of course, the expect code is
somehow capturing STDOUT. I never write expect code...
William Sutton
On Wed, 11 Mar 2009, Greg Brown wrote:
> William:
>
> Thanks for the prompt reply. Originally I was using 'CONFIG' as a handle
> but I was having tremendous difficulty simply printing the results of my
> 'show run' anywhere except (no pun) STDOUT.. which is why I started to mess
> around with redirecting STDOUT.
>
> I know I'm missing something very basic (no pun again) but darn it, I can't
> see it in here.
>
> Thanks!
>
> Greg
>
> On Wed, Mar 11, 2009 at 3:25 PM, William Sutton <william at trilug.org> wrote:
>
>> Can I suggest that, instead of opening STDOUT and printing to that, that
>> you open a different file handle, say, CONFIG, and write the lines you want
>> to see there, and print them as well if you want to see them on your screen?
>> Also, if you're not doing it, I suggest using
>>
>> $|=1;
>>
>> to turn on autoflush.
>>
>>
>> William Sutton
>>
>>
>>
>> On Wed, 11 Mar 2009, Greg Brown wrote:
>>
>> I'm throwing my hands up in disgust.
>>>
>>> My Perl/Expect.pm script prints to STDOUT just like it should.
>>>
>>> I would like to redirect ONE PART OF THIS SCRIPT to a file from STDOUT
>>>
>>> Code snippet:
>>>
>>> $ssh->expect(30,'(tcl)') || die "Never got the tcl prompt: $!\n";
>>>
>>> open(STDOUT, ">./configs/$fileName") || die "can't write to
>>> ./configs/$fileName: $!\n";
>>>
>>> print STDOUT "screw this script!!!!! I"M SICK OF IT!\n";
>>>
>>> # now send the 'show run' comamnd
>>> print $ssh "exec \"show run\"\r";
>>>
>>> print STDOUT "AGAIN! screw this script!!!!! I"M SICK OF IT!\n";
>>>
>>> close (STDOUT);
>>>
>>> Now when I run the script my outfile file contains "screw this script!!!!!
>>> I"M SICK OF IT!" and the "AGAIN" line - and ONLY those lines.. not the
>>> result of the command run by the expect module. To make matters more
>>> screwy
>>> the results of 'show run' don't appear on the screen, i.e. they aren't
>>> going
>>> to STDOUT. But they aren't going to the redirected file either.
>>>
>>> Why?
>>>
>>> I don't want to log the output of the entire script, just this one
>>> command.
>>> This should work. If the results of my 'show run' aren't there when I
>>> redirect STDOUT to a file and they are there when I don't where the hell
>>> does it GO?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
>>>
>>> Beer please.
>>> --
>>> TriLUG mailing list :
>>> http://www.trilug.org/mailman/listinfo/trilug
>>> TriLUG FAQ : http://www.trilug.org/wiki/Frequently_Asked_Questions
>>>
>>> --
>> TriLUG mailing list : http://www.trilug.org/mailman/listinfo/trilug
>> TriLUG FAQ : http://www.trilug.org/wiki/Frequently_Asked_Questions
>>
> --
> TriLUG mailing list : http://www.trilug.org/mailman/listinfo/trilug
> TriLUG FAQ : http://www.trilug.org/wiki/Frequently_Asked_Questions
>
More information about the TriLUG
mailing list