下脚本使用PYTHON执行,可以顺利完成自动化 需要环境:python 2.5 以及 pexpect模块(附件中包含了),FTP SERVER 安装完PYTHON2.5之后解压pexpect-0.98.tgz 之后cd pexpect-0.98 Python setup.py install 这样模块就安装完成了 以下是自动备份代码
#!/usr/bin/python import sys import time import os import pexpect now = time.strftime("%y%m%d", time.localtime()) #取得现在时间,格式为“年月日” os.mkdir("/var/ftp/%s" % now, 0777) #创建FTP目录 os.chmod("/var/ftp/%s" % now, 0777) #更改FTP目录的权限,使得EVERYONE可以上传 aa = open ('/var/ftp/%s/log.txt' % now, "w") #开启日志记录 fout = open ('log.txt', "w") file = open('ip.txt','r') #这里指定IP文件,可以写{jd1}路径 pafile = open('password.txt','r') #这里指定PASSWORD文件 while 1: dufile = file.readline() #读取IP文件中的{dy}行 dufile = dufile.rstrip() #读取PASSWOED中的{dy}行 dupafile = pafile.readline() dupafile = dupafile.rstrip() if not dufile: #如果IP文件中的IP全部读完,就跳出循环。如果没读完,就继续读下一行 break path = now + '/' + dufile #定义路径格式为:日期(目录)/IP(文件名) foo = pexpect.spawn('telnet %s' % dufile) #TELNET {dy}个IP foo.log_file = fout foo.expect(['Username:']) #等待字符串,如果是生产的话这里需要改一下,我是在测试环境中执行的。 foo.sendline('admin') #输出admin foo.expect(['Password:']) foo.sendline('admin') foo.sendline('en') foo.expect(['Password:']) foo.sendline(dupafile) #输出PASSWORD中的密码 foo.expect(['#']) foo.sendline('copy flash:config.text ftp:') #使用FTP备份配置文件 foo.expect(['Address or name of remote host']) foo.sendline('192.168.52.3') #FTP SERVER地址 foo.expect(['config.text']) foo.sendline(path) #另存为的名字 a = foo.expect (['bytes/sec', 'Error', pexpect.EOF, pexpect.TIMEOUT]) #等待字符串,如果出现'bytes/sec'就说明备份成功,出现'Error'就没有备份成功 if a == 0: aa.write('%s......ok\n' % dufile) #输出到日志,记录成功 foo.expect(['#']) foo.sendline('quit') #退出 foo.interact foo.close() if a == 1: aa.write('%s......failed\n' % dufile) #输出到日志,记录失败 foo.sendline('quit') foo.interact foo.close() aa.close() fout.close()
运行完之后在FTP目录下可以看到log.txt,cat log.txt可以看到: 192.168.18.36......ok 192.168.18.37......failed 192.168.18.38......failed
之后把脚本添加到CRONTAB中就可以按需执行 |