ここに合計noobがあります。私は、Pythonオブジェクトを作成し、その中のインスタンスでメソッドを実行しようとしています。実行したいコードブロックが実行されないようです。問題のコードブロックはrun_jobです。呼び出されると何もしないようです。私は間違って何をしていますか?Pythonメソッドが実行されていません
import datetime
import uuid
import paramiko
class scan_job(object):
def __init__(self, protocol, target, user_name, password, command):
self.guid = uuid.uuid1()
self.start_time = datetime.datetime.now()
self.target = target
self.command = command
self.user_name = user_name
self.password = password
self.protocol = protocol
self.result = ""
def run_job(self):
if self.protocol == 'SSH':
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
print "creating connection"
ssh.connect(self.target, self.user_name, self.password)
print "connected"
stdin, stdout, stderr = ssh.exec_command(self.command)
for line in stdout:
print '... ' + line.strip('\n')
self.result += line.strip('\n')
yield ssh
finally:
print "closing connection"
ssh.close()
print "closed"
else:
print "Unknown protocol"
def show_command(self):
print self.command
test = scan_job('SSH', '192.168.14.10', 'myuser', 'mypassword', 'uname -n')
test.show_command()
test.run_job()
あなたは 'yield'ステートメントを使ってジェネレータメソッドを記述しました。これはあなたがやるべきことですか?ジェネレータは、遅延イテラブルを作成します。 –
'yield ssh'を削除します。とにかくあなたがそれを持っている理由は分かりません。 –