Python-network-programming-python-telnet

提供:Dev Guides
移動先:案内検索

Python-Telnet

Telnetは、あるコンピューターのユーザーが同じネットワークに属している別のコンピューターにログオンできるようにするネットワークプロトコルの一種です。 telnetコマンドはホスト名とともに使用され、ユーザーの資格情報が入力されます。 ログインに成功すると、リモートユーザーはシステムの通常ユーザーと同様の方法でアプリケーションとデータにアクセスできます。 もちろん、一部の特権は、システムをセットアップおよび保守するシステムの管理者が制御できます。

Pythonでは、telnetはモジュールtelnetlibによって実装されます。このモジュールは、接続を確立するために必要なメソッドを備えたTelnetクラスを持っています。 次の例では、getpassモジュールを使用して、ログインプロセスの一部としてパスワードプロンプトを処理します。 また、Unixホストへの接続が確立されていると想定しています。 プログラムで使用されるtelnetlib.Telnetクラスのさまざまなメソッドを以下に説明します。

  • Telnet.read_until-指定された文字列が予想されるまで、またはタイムアウト秒が経過するまで読み取ります。
  • Telnet.write-文字列をソケットに書き込み、IAC文字を2倍にします。 接続がブロックされると、ブロックされる可能性があります。 接続が閉じられると、socket.errorが発生する場合があります。
  • Telnet.read_all()-EOFまですべてのデータを読み取ります。接続が閉じるまでブロックします。

import getpass
import telnetlib

HOST = "http://localhost:8000/"
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()

上記のプログラムを実行すると、次の出力が得られます-

 - lrwxrwxrwx    1 0        0               1 Nov 13  2012 ftp -> .
- lrwxrwxrwx    1 0        0               3 Nov 13  2012 mirror -> pub
- drwxr-xr-x   23 0        0            4096 Nov 27  2017 pub
- drwxr-sr-x   88 0        450          4096 May 04 19:30 site
- drwxr-xr-x    9 0        0            4096 Jan 23  2014 vol

この出力は、プログラムの実行時に詳細が送信されるリモートコンピューターに固有であることに注意してください。