Python Telnet connection

Martin picture Martin · Dec 25, 2010 · Viewed 46k times · Source

I was playing around with python 3.1 when I came to a problem. I want to connect to a telnet server. Here is my code:

import sys
import telnetlib

tn = telnetlib.Telnet("10.0.0.138")


tn.read_until(b"Username :", 2)
tn.write(b"\n")

tn.read_until(b"Password :", 2)
tn.write(b"\n")

tn.read_until(b"=>", 2)
tn.write(b"exit\n")

tn.close

It works to read until "Username :". There is also no error message when writing an emty line. But when i read until "Password :" i get an empty string. I also get an empty string when i read all.

Please help me if you can.

EDIT: Here is the output when i connect to the server via putty.

 Willkommen am THOMSON TG787v
   Plattform:VDNT-D  Firmware:8.2.5.0  Seriennummer:CP0919MT238
 Bitte identifizieren Sie sich mit Ihrem Benutzernamen und Kennwort
--------------------------------------------------------------------------------




Username :
Password :
------------------------------------------------------------------------

                             ______  Thomson TG787v
                         ___/_____/\
                        /         /\\  8.2.5.0
                  _____/__       /  \\
                _/       /\_____/___ \  Copyright (c) 1999-2009, THOMSON
               //       /  \       /\ \
       _______//_______/    \     / _\/______
      /      / \       \    /    / /        /\
   __/      /   \       \  /    / /        / _\__
  / /      /     \_______\/    / /        / /   /\
 /_/______/___________________/ /________/ /___/  \
 \ \      \    ___________    \ \        \ \   \  /
  \_\      \  /          /\    \ \        \ \___\/
     \      \/          /  \    \ \        \  /
      \_____/          /    \    \ \________\/
           /__________/      \    \  /
           \   _____  \      /_____\/
            \ /    /\  \    /___\/
             /____/  \  \  /
             \    \  /___\/
              \____\/

------------------------------------------------------------------------
CP0919MT238=>

I pressed return after "Username :" and then after "Password :".

Answer

Uku Loskit picture Uku Loskit · Dec 25, 2010

Lol, i had pretty much the same router as you.

Try this, bit of my old code:

tn = telnetlib.Telnet(HOST)

tn.read_until('Username : ')

tn.write(user+ "\r")

tn.read_until("Password : ")

tn.write(password+ "\n")

tn.write("\r")

This is for Python 2, but try just adding the extra space after the semicolon. Also, if this does not work, use wireshark and see what the putty connection is doing and correct your code to match.