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 :".
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.
# Script to Telnet in to a host
# For now I have hardcoded the HOST that can be taken as input if required
#run as " python teli.py ""
import time
import telnetlib
HOST ="www.google.com"
tn=telnetlib.Telnet(HOST,"80")
tn.write("GET /index.html HTTP/1.1\nHost:"+HOST+"\n\n")
l=tn.read_all()
print l
The docs in this link: http://docs.python.org/library/telnetlib.html
It has a sample code at the end under the section "Telnet Example".
You can access the example via: http://docs.python.org/library/telnetlib.html#telnet-example
来源:https://stackoverflow.com/questions/4528831/python-telnet-connection