복붙노트

[PYTHON] telnetlib 파이썬 예제

PYTHON

telnetlib 파이썬 예제

그래서 파이썬 워드 프로세서에 의해 주어진이 정말 간단한 예제를 노력하고있어 :

import getpass
import sys
import telnetlib

HOST = "<HOST_IP>"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()

tn = telnetlib.Telnet(HOST)

tn.read_until("login: ")
tn.write(user + "\n")
if password:
   tn.read_until("Password: ")
   tn.write(password + "\n")

tn.write("ls\n")
tn.write("exit\n")
print tn.read_all()

내 문제는 그것을 read_all () 끝에 응답하지 않는다 ... 아무것도 인쇄하지 않습니다. 나는 전에이 모듈을 사용한 적이 없으므로 계속하기 전에이 기본적인 예제를 사용하려고 노력 중이다. BTW, 파이썬 2.4 사용하고 있습니다. 고맙습니다.

해결법

  1. ==============================

    1.좋아, 해결책을 찾았 어. ls로 들어가서 나가기 전에 먼저 터미널 유형을 지정해야했습니다. 첨가

    좋아, 해결책을 찾았 어. ls로 들어가서 나가기 전에 먼저 터미널 유형을 지정해야했습니다. 첨가

    tn.write("vt100\n") 
    

    "ls"가 나에게 문제를 해결하기 전에.

  2. ==============================

    2.Windows를 사용하는 경우 줄 바꿈 문자 앞에 캐리지 리턴 (\ r)을 추가해야합니다.

    Windows를 사용하는 경우 줄 바꿈 문자 앞에 캐리지 리턴 (\ r)을 추가해야합니다.

    tn.write(user.encode('ascii') + "\r\n".encode('ascii'))
    
  3. ==============================

    3.테스트 할 텔넷 서버가 없지만 각 명령을 작성한 후 프롬프트에 서버 응답을 읽지 않는 것이 문제라고 생각합니다.

    테스트 할 텔넷 서버가 없지만 각 명령을 작성한 후 프롬프트에 서버 응답을 읽지 않는 것이 문제라고 생각합니다.

    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는 까다로울 수 있으며 FTP 서버 및 환경 설정에 따라 상황이 다릅니다. 텔넷을 통한 로그인 및 사용자 상호 작용을 자동화하기 위해 pexpect와 같은 것을 조사하는 것이 더 나을 것입니다.

  4. ==============================

    4.나는 이것이 늦게 게시하는 것을 알고 있지만 다른 사람들을 도울 수 있습니다. 나는 또한이 권리를 얻으려고 애를 썼지 만, 여기에는 나의 코드 조각이있다. 내 telnet은 loginID와 Password를 묻는 것처럼 특정 흐름을 따를 것이고, 그런 다음 특정 문자열이 여기에 표시 될 때까지 기다려야합니다. 제 경우에는 "DB>"였으므로 명령을 계속 진행할 수 있습니다. 내 출력이 "out"변수에 저장됩니다.

    나는 이것이 늦게 게시하는 것을 알고 있지만 다른 사람들을 도울 수 있습니다. 나는 또한이 권리를 얻으려고 애를 썼지 만, 여기에는 나의 코드 조각이있다. 내 telnet은 loginID와 Password를 묻는 것처럼 특정 흐름을 따를 것이고, 그런 다음 특정 문자열이 여기에 표시 될 때까지 기다려야합니다. 제 경우에는 "DB>"였으므로 명령을 계속 진행할 수 있습니다. 내 출력이 "out"변수에 저장됩니다.

    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()
    

    유사 콘텐츠 및 도움을 받으려면 웹 사이트를 확인하십시오.

  5. ==============================

    5.나는 SynAccess 파워 스트립에 글을 쓰려고 잠시 고생했다. 이것이 내가 그랬던 방법이다 :

    나는 SynAccess 파워 스트립에 글을 쓰려고 잠시 고생했다. 이것이 내가 그랬던 방법이다 :

    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
    
  6. ==============================

    6.파이썬 2.7을 사용하거나 마지막 줄에 "(", ")"와 함께 상위 버전을 사용하십시오.

    파이썬 2.7을 사용하거나 마지막 줄에 "(", ")"와 함께 상위 버전을 사용하십시오.

  7. from https://stackoverflow.com/questions/10952514/telnetlib-python-example by cc-by-sa and MIT license