我是python的新手,并且一直在阅读和上网以完成我的任务。
我正在编写一个函数,它会对我的设备执行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 admin@<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上打印输出并写入文件。我能够在stdout中打印并登录到文件但是在执行命令之后,虽然我用p.close()关闭了spawn类,但它并没有关闭并结束脚本执行。该计划永远留在那里。如何在执行这些命令后关闭程序。
答案 0 :(得分:1)
.write
是一个方法,而不是一个属性,所以你应该做variable.write("anything you want")
而不是`variable.write =&#34;你想要的任何东西&#34;。如果不调用函数,Python将无法更改内容。
所以不要这样做:
class simpleTelnet(logger):
def __init__(self):
print 'Inside simpleTelnt Constructor'
logger.__init__(self,"myfilename.txt")
self.log.write = 'Writing into the log file
你做:
class simpleTelnet(logger):
def __init__(self):
print 'Inside simpleTelnt Constructor'
logger.__init__(self,"myfilename.txt")
self.log.write('Writing into the log file')
正如其他用户指出的那样,你有相同的代码行,但正确的语法有6行以上。在发布问题之前,您必须修改代码。下次尝试这样做。