telnet を使用し、ログインが必要なコードがあります。ログインが正しくない場合、コンソールに「正しくないログイン」が返されます。プログラムが停止しないように、この例外をキャッチしてスキップしたいと考えています。私が試したことは以下の通りです:
try:
session.write("username".encode('ascii') + b"\r")
session.write("password".encode('ascii') + b"\r")
***this is the point where the console will return "Incorrect login"***
except sys.stdout == "Incorrect login":
print(sys.stdout)
pass
else:
**Rest of the code**
この出力をキャッチすることはなく、コードに進み、最終的にインデックス エラーが発生するようです (ログインに必要なデータがないため)。検索してみましたが、運がありませんでした。どんな助けでも大歓迎です。私はpython 3.3を実行していますが、まだ学習中です。ありがとう!
編集:telnetが示すものは次のとおりです
login: badusername
password: **blank b/c it is a pw field**
Login incorrect
login:
Edit2: その他までのすべてのコード (機密保持のために編集)
import telnetlib, time
import sys, string, socket
import cx_Oracle
sql = "select column from table"
con = cx_Oracle.connect("login info blah...")
cur = con.cursor()
cur.execute(sql)
row = cur.fetchone()
rows = cur.fetchall()
def Tup():
return (rows)
cur.close()
con.close()
i = 0
while i < len(rows):
host = Tup()[i][0]
timeout = 120
print(host + ' =', end = ' ')
try:
session = telnetlib.Telnet(host, 23, timeout)
except:
out = open("Data.txt",'a')
out.write(host + " = FAILED\n")
print("FAILED")
else:
try:
session.write("username".encode('ascii') + b"\r")
session.write("pass".encode('ascii') + b"\r")
except sys.stdout == "Incorrect login":
print(sys.stdout)
pass
else: