저는 파이썬의 초보자이며 내 작업을 수행하기 위해 그물을 읽고 서핑하고 있습니다.pexpect 모듈을 사용하여 출력을 파일과 stdout에 쓰는 방법
내 장치에 ssh
을 수행하고 몇 가지 명령을 실행하고 결과를 터미널과 로그 파일에 모두 표시하는 함수를 작성하고 있습니다.
나는이 같은 것을 쓴 : 여기
class logger(object):
def __init__(self, filename="Default.log"):
print 'Inside Logger Class'
self.terminal = sys.stdout
self.log = open(filename, "a")
class simpleTelnet(logger):
def __init__(self):
print 'Inside simpleTelnt Constructor'
logger.__init__(self,"myfilename.txt")
self.log.write = 'Writing into the log file'
def telnetSession(self):
p=pexpect.spawn('ssh [email protected]<ip address>')
p.logfile = sys.stdout
p.expect('Password:')
p.sendline('password')
time.sleep(2)
p.sendline('show version | no-more')
expect(pexpect.EOF, timeout = None)
out = p.before()
self.log.write(p.logfile)
p.close()
return out
if __name__ == "__main__":
output = simpleTelnet()
cmd = output.telnetSession()
내가 장치에 로그인하여 모두 표준 출력에 출력을 인쇄하고 또한 파일에 쓰기를 시도하고있다. stdout에서 인쇄하고 파일에 로그 할 수 있지만 p.close()를 사용하여 스폰 클래스를 닫지 만 명령을 실행 한 후에는 스크립트 실행을 닫지 않고 종료하지 않습니다. 프로그램은 영원히 거기에 머물러 있습니다. 이 명령을 실행 한 후에 어떻게 프로그램을 닫을 수 있습니까?
실제로 추적 코드를 읽고 이해하려고 노력 했습니까? 그것은 당신이 잘못한 것을 간단하고 정확하게 알려줍니다. 또한 오류가 발생한 행 위의 여섯 행은 올바르게 수행하는 방법을 보여주는 거의 동일한 행입니다. – ekhumoro
oops .. 잡았어. 자기를 사용 했어야했다 .log.write ('파일 쓰기'). 이 작품. – user596922