web-dev-qa-db-ja.com

telnetlib python例

だから私はpython docsによって与えられたこの本当に簡単な例を試しています:

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()の最後でハングすることです...何も出力されません。これまでにこのモジュールを使用したことがないので、続行する前に、この本当に基本的な例を機能させるようにしています。ところで、私はpython 2.4を使用しています。ありがとうございます。

10
de1337ed

さて、私は解決策を見つけました。 lsを入力して終了する前に、まず端末タイプを指定する必要がありました。追加

tn.write("vt100\n") 

「ls」が問題を修正する前に。

9
de1337ed

Windowsを使用している場合は、必ずキャリッジリターン(\r)改行文字の前:

tn.write(user.encode('ascii') + "\r\n".encode('ascii'))
6
Kalouste

これは投稿が遅いのですが、他の人を助けるかもしれません。私もこれを正しく行うのに苦労しましたが、これが私のコードです。私の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()

その他のバリエーションとヘルプについては、ウェブサイトをチェックしてください nullege

2
Anukruti

テストするTelnetサーバーがありませんが、問題は、コマンドを入力するたびにプロンプ​​トまでサーバーの応答を読み取っていないことです。

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

ところで、telnetnetlibはトリッキーになる可能性があり、FTPサーバーと環境設定によって異なります。 pexpect のようなものを調べて、Telnet経由でのログインとユーザーの対話を自動化したほうがよい場合があります。

2
Corey Goldberg

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
1

python 2.7または最後の行に "("、 ")"を含むより高いバージョンを使用する

0
Saurabh kala