python实现ssh
首先呢,学习了怎么修改路由器配置,添加guest
百度一下:路由器配置命令
对着敲着玩,就知道应该怎么弄了
然后是重点,实现ssh连接
各种模板网上是有的,我想要解决的问题是:如何将原来屏幕的消息保存到文件之中
涉及到两个问题:
1.child.before存储的是上一次命令所返回的信息
2.很多命令的输出信息在一页之内显示不完全,所以呢,需要按几次空格
试了很多次想了一种这样的解决方法:
在child.sendline()的时候,就直接把这些空格敲上,反正不会影响到下一次的查询
然后,就是在新建文件的时候,记录上一次的查询命令
下个版本会把出错处理加上
没有使用child.interact()
代码分享如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pexpect
import time
if __name__ == '__main__':
user = ''
ip = ''
mypassword = ''
rootpassword = ''
enter = '\n'
child = pexpect.spawn('ssh -1 '+user+'@'+ip)
fout = file('mylog.txt','w')
child.logfile = fout
child.expect ('password:')
child.sendline (mypassword)
child.expect ('Router>')
child.sendline ('en')
child.expect ('Password:')
child.sendline (rootpassword)
cmd = ''
while True:
print "Route#"
beforecmd = cmd
cmd = raw_input()
child.expect('Router#')
child.sendline(cmd)
for i in range(10):
child.send(' ')
if beforecmd != '':
filename = beforecmd.replace(' ','-')+'.txt'
f=open(filename,'w')
f.write(child.before)
if cmd == 'exit':
break
child.sendline('exit')