han_perl has asked for the wisdom of the Perl Monks concerning the following question:

Have anyone been able to use the Net::Telnet module to connect to a windows machine?

I've been able to use the telnet module to connect from my windows machine to solaris and linux but not to another windows machine ( w2k3 ).

I'm able to manually telnet into the machine. With the telnet module I can never get it to login.

Any clues on which version of telnet.pm will work? Any setup issues I should be aware of? Do I need to change any parsing inside the telnet.pm?

Thanks.
  • Comment on Using perl telnet to connect to windows

Replies are listed 'Best First'.
Re: Using perl telnet to connect to windows
by Thelonius (Priest) on May 02, 2005 at 20:29 UTC
    From the Net::Telnet documentation
    Connecting to a Remote MS-Windows Machine

    By default MS-Windows doesn't come with a TELNET server. However third party TELNET servers are available. Unfortunately many of these servers falsely claim to be a TELNET server. This is especially true of the so-called "Microsoft Telnet Server" that comes installed with some newer versions MS-Windows.

    When a TELNET server first accepts a connection, it must use the ASCII control characters carriage-return and line-feed to start a new line (see RFC854). A server like the "Microsoft Telnet Server" that doesn't do this, isn't a TELNET server. These servers send ANSI terminal escape sequences to position to a column on a subsequent line and to even position while writing characters that are adjacent to each other. Worse, when sending output these servers resend previously sent command output in a misguided attempt to display an entire terminal screen.

    Connecting Net::Telnet to one of these false TELNET servers makes your job of parsing command output very difficult. It's better to replace a false TELNET server with a real TELNET server. The better TELNET servers for MS-Windows allow you to avoid the ANSI escapes by turning off something some of them call console mode.

    If you use the Dump_log option:
    my $t = new Net::Telnet (Timeout => 10, Dump_log => "telnetdump.txt");
    you will see these characters in the file.
Re: Using perl telnet to connect to windows
by sasikumar (Monk) on May 02, 2005 at 19:16 UTC
    Hi
    Its because of the Windows authentication problem. The telnet server tries to connect thru the default login cmd of telnet. But as usaual telnet on windows2k (Microsoft telnet service that comes along with windows) will not use this instead it does the NTLM Authentication.

    Currently i have no other solution. Get a Third party telnet server and stop the windows telnet server.

    Thanks
    SasiKumar
Re: Using perl telnet to connect to windows
by eXile (Priest) on May 03, 2005 at 05:14 UTC
    If you can manually telnet into the machine, using Expect might be a solution for you, look into the Tutorials section for a good primer on using Expect.
Re: Using perl telnet to connect to windows
by osunderdog (Deacon) on May 02, 2005 at 19:03 UTC

    Do you know that the windows box has a telnet server running on it? Most *nix machines have this server. Windows does not have this server by default. Can you use a standard telnet client to connect to the windows box?

    You'll have to get one and start it as a service on your windows box.

    Duhooo! I'm not my self today. PLEASE disregard this.


    Soon to be unemployed.