telnetlib python example

后端 未结 6 1819
走了就别回头了
走了就别回头了 2020-12-08 05:26

So I\'m trying this really simple example given by the python docs:

import getpass
import sys
import telnetlib

HOST = \"\"
user = raw_input(\         


        
相关标签:
6条回答
  • 2020-12-08 06:04

    I don't have a telnet server to test against, but I think the issue is that you are not reading server responses up to the prompt, after each command you write.

    PROMPT = ':~$'
    tn = telnetlib.Telnet(HOST)
    tn.read_until('login: ')
    tn.write(user + '\n')
    if password:
       tn.read_until('Password: ')
       tn.write(password + '\n')
    tn.read_until(PROMPT)
    tn.write('ls\n')
    print tn.read_until(PROMPT)
    tn.write('exit\n')
    

    btw, telnetnetlib can be tricky and things varies depending on your FTP server and environment setup. you might be better off looking into something like pexpect to automate login and user interaction over telnet.

    0 讨论(0)
  • 2020-12-08 06:08

    If you're using Windows, be sure to add carriage return (\r) before the new line character:

    tn.write(user.encode('ascii') + "\r\n".encode('ascii'))
    
    0 讨论(0)
  • 2020-12-08 06:11

    Okay, I found a solution. Before I entered ls and exit, I needed to first specify the terminal type. Adding

    tn.write("vt100\n") 
    

    before the "ls" fixed the problem for me.

    0 讨论(0)
  • 2020-12-08 06:14

    I struggled for a while trying to write to a SynAccess power strip. This is how I did it:

    import sys
    import telnetlib
    HOST = < your SynAccess switch ip address >
    user = < user name >
    password = < password >
    
    tn = telnetlib.Telnet(HOST, 23, 5)
    tn.write("login\r\n")
    tn.write(user + "\r\n")
    tn.write(password + "\r\n")
    tn.write("rb 3\r\n") # this reboots plug 3
    tn.write("rb 1\r\n") # this reboots plug 1
    tn.write("logout\r\n")
    tn.close
    
    0 讨论(0)
  • 2020-12-08 06:16

    I know this is late to post but may help others. I also struggled to get this right but here is my piece of code. My telnet would follow certain flow like it would ask for loginID and then Password and then you have to wait for a particular string to be displayed here,which for my case was "DB>" then you can proceed with the command and all. My output would be saved in "out" varible

    import os,re,telnetlib
    host = "10.xxx.xxx.xxx"
    port = 23
    
    telnet = telnetlib.Telnet()
    telnet.open(host, port)
    telnet.write('loginID\r\n')
    telnet.write('Password\r\n')
    out = telnet.read_until("DB>", 5)
    telnet.write('show cable modem reg\r\n') #Mycommand
    out = telnet.read_until("DB>", 5)
    telnet.write('quit\r\n')
    telnet.close()
    

    For more variations and help, Check the website nullege

    0 讨论(0)
  • 2020-12-08 06:20

    use python 2.7 or use a higher version with"(" ,")" at last line

    0 讨论(0)
提交回复
热议问题