コードは以下の通り:
mport logging
import telnetlib
import time
class TelnetClient():
def __init__(self, ):
self.tn = telnetlib.Telnet()
# この関数は、ホストへのtelnetログインを実装する。
def login_host(self, host_ip, username, password):
try:
self.tn.open(host_ip, port=23)
except:
logging.warning('%sネットワーク接続に失敗した % host_ip)
return False
# ログイン画面が表示されるまで待ち、ユーザー名を入力する。
self.tn.read_until(b'login: ', timeout=10)
self.tn.write(username.encode('ascii') + b'
')
# Passwordが表示されるまで待ち、ユーザー名を入力する。
self.tn.read_until(b'Password: ', timeout=10)
self.tn.write(password.encode('ascii') + b'
')
# サーバーに十分な応答時間を与えるため、結果を受け取る前に2秒遅延させる。
time.sleep(2)
# ログイン結果を取得する
# read_very_eager()フェッチされるのは、フェッチ後のすべての出力である。
command_result = self.tn.read_very_eager().decode('ascii')
if 'Login incorrect' not in command_result:
logging.warning('%sログイン成功 % host_ip)
return True
else:
logging.warning('%sログインに失敗しました。ユーザー名またはパスワードが間違っています。 % host_ip)
return False
# この関数は、渡されたコマンドを実行し、その結果を出力する。
def execute_some_command(self, command):
# コマンドを実行する
self.tn.write(command.encode('ascii') + b'
')
time.sleep(2)
# コマンド結果を取得する
command_result = self.tn.read_very_eager().decode('ascii')
logging.warning('コマンド実行結果
%s' % command_result)
# telnetを終了する
def logout_host(self):
self.tn.write(b"exit
")
if __name__ == '__main__':
host_ip = '192.168.1.X'
username = 'root'
password = 'XXXX'
command1 = 'XXXX'
telnet_client = TelnetClient()
# ログイン結果がTrueで返された場合、コマンドを実行し、終了する。
if telnet_client.login_host(host_ip, username, password):
telnet_client.execute_some_command(command1)
telnet_client.logout_host()