2016-12-13 10 views
2

ユーザー名とパスワードを持つ2つのリストがあります。私は2つの圧縮されたリストを反復してどちらが正しいか確認したいが、それは動作していない。 以下は以下の例外をスローするコードでトレースバックどのように私はPythonのtelnetセッションで2つ以上の引数を送信できますか?

Traceback (most recent call last): 
File "C:\Users\mohamed\Downloads\second_PassWD_Test.py", line 27, in <module> 
mme=tn.write(j,i) 
TypeError: write() takes exactly 2 arguments (3 given) 

あります。

import telnetlib 
import re 
HOST = "192.168.1.1" 
USER = ["admin\n","admin\n","admin"] 
PASS = ["cpe#","1234"," "] 

try: 
    tn = telnetlib.Telnet(HOST) 
except: 
print "Oops! there is a connection error" 
frist_log = tn.read_until(":") 
if "log" in frist_log: 
while 1: 
    for i,j in zip(USER,PASS): 
     tn.write(j,i) 
    break 
+0

下の例に示すように、期待される出力のリストを使用して、ドキュメンタリーを確認する1つの方法クリーンなセットアップのための素晴らしい例がありますhttps://docs.python.org/2/library/telnetlib.html –

+0

ありがとうアリ、しかし私は私の引用に関連するものを見つけることができません、私は毎回リストからアイテムを送る必要がありますForループによる時間 –

+0

'telnet.Write(buffer)'は達成しようとしているバッファ引数だけをとりますか? – cmidi

答えて

0

Telnet.write(buffer)のみのtelnetオブジェクトであり、他のソリューションは、例外がスローされますので、あなたのセッションに送信するためのバッファである最初の2つの引数を取ります。 、expect APIを使用してスクリプトを除いて似ている問題を解決し、tn.write(i、j)の上の変更順序を

USER = ["admin\n","admin\n","admin"] 
PASS = ["cpe#","1234"," "] 
prompt = "#" ## or your system prompt 
tn = telnetlib.Telnet(HOST) 
first_log = tn.read_until(":") 
for user,password in zip(USER,PASS): 
    try: 
     tn.write(user) 
     tn.expect([":"],timeout = 3) # 3 second timeout for password prompt 
     tn.write(password+"\n") 
     index,obj,string = tn.expect([":",prompt],timeout = 3) 
     found = string.find(prompt) 
     if found >= 0: 
      break # found the username password match break 
     ###else continue for next user/password match  
    except: 
     print "exception",sys.exc_info()[0] 
+0

私の友人cmidiですが、私はコードがユーザー名 "admin"を送らないので、ユーザーリストを((USER = "admin"))に変更しようとしました。そうでなければ、同じユーザーとpasswDでこのデバイスをtelnetでtelnetすることができます。あなたは私と再び確認できますか? –

+0

HOST = "192.168.1.1" USER = "admin" PASS = ["cpe#"、 "1234"、 "c"] prompt = ">>" ##またはご使用のシステムプロンプト tn = telnetlib.Telnet(HOST) first_log = tn.read_until( ":") ユーザーの場合は、パスワード(USER、PASS): try: 秒= tn.write(ユーザー) tn.expect([":"]、タイムアウト= 3)パスワードプロンプトに対して#3秒のタイムアウトが発生しました tn.write(パスワード) index、obj、string = tn。 found = string.find(プロンプト) 見つかった場合> 0: –

+0

@ M.hossenyここで、印刷を追加できない、またはデバッグを有効にすることができます。追加したコードには、私が追加した\ n ""がありませんでした。 'Telnet.set_debuglevel(4)'のデバッグを有効にします。また、サイズが異なる場合、 'zip(USER、PASS)'が問題を引き起こす可能性のあるサイズのリストを小さくするようにZIPを使用している場合は、USERとPASSが同じサイズであることを確認してください – cmidi

関連する問題