IBM as400ボックス用のtelnetクライアントで作業していますが、適切な量のデータが返されないという問題に遭遇しました。最初に、プログラムは書き込み先のユーザー名とパスワードフィールドを持つtelnetセッションに接続し、従業員にデータの入力、データベースへのアクセスなどを許可するユーザーシェルに移動する必要があります。
read_very_eager
を呼び出すときログイン後のセッションだけでなく、ログイン画面とログイン後のセッションで満たされたバッファーを返します。なぜこれが起こるのか、その他の
read_xyz
また、メソッドは何も印刷しないか、ログイン画面の最初の数バイトだけでバッファがいっぱいになります。私のコードは次のとおりです(機密データは省略されます):
def login():
tn = telnetlib.Telnet(host, port)
sleep(1)
tn.write(username + "\t")
tn.write(password + "\r\n")
sleep(1)
data = tn.read_very_eager()
print data
def main():
print "started"
login()
main()
回答 1 件
関連記事
- 反応関数コンポーネントの最後に値を返すと予想されるリンターを修正するにはどうすればよいですか?
- Python:再帰関数。 targetsumのすべてのサブセットを返す方法
- Pythonで独自の関数を使用してファイルを作成し、Anacondaルートに保存します
- Pythonは列挙型クラスからintを返します
- PHPでPythonプログラムを実行し、HTML内で戻り値を使用する方法?
- C:「ポインタ戻り関数」の引数をNULLで安全にする方法は?
- Pythonで関数siultaneoulsyを実行する
- Pythonを使用したtrace32:関数T32_ReadMemoryObjからの戻りデータを解釈する方法
- Pythonでの戻り値の型のヒントの範囲
- Pythonのメインメニューに戻る前にプロットを表示する方法
回答を送信する前に、ログインとパスワードのプロンプトを読んでください。それ以外の場合は、ストリームに保持され、次の読み取り呼び出しで読み取られます。
そして、
read_some()
を使用しますread_very_eager()
の代わりに 最初に寝る必要はありません。何かが利用可能になるのを待ってから、そこにあるものをすべて返します。