Форум сайта python.su
Есть скрипт, он делает бек-ап на Микротике и льет на FTP, но хостов много и могут меняться, и каждый раз править или вписывать 200 хостов как то не хочется, как дописать парсер который берет поочередно ip ? Сам скрипт ниже
# versioning
Version = datetime.date.today()
#print "\n" + str(Version)
# hosts array IP1
hosts = ( "1.2.3.4", )
# username
users = ( "login",)
iterUser = iter(users)
# userpassword
passwords = ( "pass", )
iterPassword = iter(passwords)
# FTPD IP
FtpdIP = "5.6.7.8"
# ftp user account
ftpUser = "login"
ftpPass = "pass"
# keep backups for 4 weeks
backtime = datetime.timedelta(weeks=-4)
sshCli = SSHClient()
sshCli.set_missing_host_key_policy(AutoAddPolicy())
print "header done"
# loop host adresses
for host in hosts:
print "\n" + str(host)
# iterate through user-password pairs
user = iterUser.next()
Password = iterPassword.next()
# define operations
CreateLocalBckp = "system backup save name=" + str(host) + "_" + str(Version) + ".backup"
UploadToFtp = "tool fetch address=" + str(FtpdIP) + " mode=ftp dst-path=" + str(host) + "_" + str(Version) + ".backup src-path=" + str(host) + "_" + str(Version)+ ".backup" + " user=" + str(ftpUser) + " password=" + str(ftpPass) + " upload=yes"
RemoveLocalBckp = 'file remove "' + str(host) + "_" + str(Version) + ".backup" + '"'
# try for not to fail the whole script on one error
try:
print "connecting.." + str(host) + "@" + str(user) + ":" + str(Password)
sshCli.connect(str(host), port=22, username=str(user), password=str(Password))
print "connected.."
# creating local backup
print "creating local backup.. /" + CreateLocalBckp
sshCli.exec_command(CreateLocalBckp)
# sleep after each command because mikrotik can not do it so fast as script executes
time.sleep(2)
print "local backup created.."
# uloading local backup to ftp
print "uploading local backup to ftp.. /" + UploadToFtp
sshCli.exec_command(UploadToFtp)
time.sleep(2)
print "backup uploaded to remote location.."
# removing local backup
time.sleep(2)
print "removing local backup.. /" + RemoveLocalBckp
sshCli.exec_command(RemoveLocalBckp)
time.sleep(2)
print "local backup removed.."
sshCli.close()
# try delete old file (if exists)
try:
os.remove("/tftp/" + str(host) + "_" + str(Version + backtime) +".cfg")
except:
print "Error while trying to delete old backup " + "/tftp/" + str(host) + "_" + str(Version + backtime) +".cfg"
except:
print "Error connecting to host", host
Офлайн
VoisHunterНадо на функциях всё делать.
как дописать парсер который берет поочередно ip ?
servername = 'ftp.host.com'
port = 21
authfile = 'secret.dat'
backupdir = '/home/user/backup'
destination_directory = '/backups'
login, password = get_auth_info(authfile)
connection = ftp_server_connect(servername, port, login, password)
archive = get_backup_archive(backupdir)
connetion_send(connection, archive, destination_directory)
Офлайн
Спасибо! Уже разобрался, и спасибо за пояснение )
Офлайн