1
child = pexpect.spawn('ftp XX.XXX.73.64')
child.logfile = sys.stdout
child.expect ('Name .*:')
child.sendline('admin')
child.expect('Password .*:')
child.sendline('XXXXX')

出力: XX.XXX.73.64 に接続されています。220 (vsFTPd 2.0.7) 名前 (XX.XXX.73.64): admin admin 331 パスワードを指定してください。パスワード:XXXXX

スイッチへの FTPing を自動化しようとしていますが、「admin」の sendline コマンドが「admin」を 2 回送信しているようです。したがって、私のユーザー名は正しくありません。これを修正する方法はありますか?

4

1 に答える 1

0

多くの情報がなければ、コードをデバッグするのは非常に困難です。明らかsendlineに行を 2 回送信することは想定されていないため、何かが間違っています…しかし、再現可能なテスト ケースや、これら 4 行を超える情報が提供されていません。

pexpectしかし、実際には、最初から使おうとしなければ、物事はずっと簡単になります。そのために設計されていない CLI プログラムを本当にスクリプト化する必要がある場合pexpectは、優れたオプションです。しかし、API (またはスクリプト可能なアプリなど) があれば、常に簡単になります。Python には理由からバッテリーが含まれており、そのバッテリーの 1 つが次のftplibとおりです。

ftp = ftplib.FTP('XX.XXX.73.64', 'admin', 'XXXXX')

connect通常より手の込んだことを行う必要がある場合は、コンストラクターに実行させる代わりにand呼び出しを明示的にすることができloginますが、この場合はそうしないので、文字通りワンライナーです。

Python で FTP を使用する方法は、すばらしいチュートリアルのように見えます。

于 2013-06-13T00:48:09.937 に答える