Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- #Letze Aenderung 2011-03-17
- import pexpect, os, glob, sys, getpass
- benutzer=''
- SERVER='feld-server'
- CLIENT=os.uname()[1]
- benutzer_passwoerter={}
- progStarten=raw_input('Moechtest Du eine Sicherung/Zurueckspielen fuer '+CLIENT+' durchfuehren? (j/n) ')
- if progStarten in ('y', 'Y', 'yes', 'Yes', 'j', 'J', 'ja', 'Ja'):
- # 'beispiel':{'Benutzer':['markus', 'maria', 'bernard', 'kaiserbert'],
- # 'Frage':'',
- # 'Exclude':'',
- # 'Client':'',
- # 'Server':''},
- katalog = {
- 'eigenedateien':{'Benutzer':['markus', 'maria', 'bernard', 'kaiserbert'],
- 'Frage':[' von /home/', '/eigenedateien/'],
- 'Exclude':['--exclude', '__thereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__'],
- 'Client':['/home/', '/eigenedateien/'],
- 'Server':['@'+SERVER+':/home/', '/eigenedateien/']},
- 'firefox':{'Benutzer':['markus', 'maria', 'bernard', 'kaiserbert'],
- 'Frage':[' von /home/', '/.mozilla/firefox/'],
- 'Exclude':['--exclude', '__thereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__'],
- 'Client':['/home/', '/.mozilla/firefox/'],
- 'Server':['@'+SERVER+':/home/', '/mozilla/firefox/']},
- 'thunderbird':{'Benutzer':['markus', 'maria', 'bernard', 'kaiserbert'],
- 'Frage':[' von /home/', '/.thunderbird/'],
- 'Exclude':['--exclude', '__thereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__'],
- 'Client':['/home/', '/.thunderbird/'],
- 'Server':['@'+SERVER+':/home/', '/thunderbird/']},
- # Unterschiedliche OS haben unterschiedliche Programm-Einstellungen, daher werden
- # diese auch getrennt gesichert, nur die Snapshots und *.vdi Dateien sind ein Muss.
- 'snapshots':{'Benutzer':['markus', 'maria', 'bernard', 'kaiserbert'],
- 'Frage':[' von /home/', '/.VirtualBox/Machines/Standard/Snapshots/'],
- 'Exclude':['--exclude', '__thereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__'],
- 'Client':['/home/', '/.VirtualBox/Machines/Standard/Snapshots/'],
- 'Server':['@'+SERVER+':/home/', '/VirtualBox/Machines/Standard/Snapshots/']},
- '.virtualbox':{'Benutzer':['markus', 'maria', 'bernard', 'kaiserbert'],
- 'Frage':[' von /home/', '/.VirtualBox/ ohne Snapshots'],
- 'Exclude':['--exclude', 'Machines/Standard/Snapshots/*'],
- 'Client':['/home/', '/.VirtualBox/'],
- 'Server':['@'+SERVER+':/home/', '/VirtualBox@'+CLIENT+'/']},
- '.ispell':{'Benutzer':['markus', 'maria', 'bernard', 'kaiserbert'],
- 'Frage':[' von /home/', '/.ispell_ngerman/'],
- 'Exclude':['--exclude', '"__thereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__"'],
- 'Client':['/home/', '/.ispell_ngerman'],
- 'Server':['@'+SERVER+':/home/', '/ispell_ngerman']},
- 'bin':{'Benutzer':['markus', 'maria', 'bernard', 'kaiserbert'],
- 'Frage':[' von /home/', '/bin/'],
- 'Exclude':['--exclude', '__thereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__'],
- 'Client':['/home/', '/bin/'],
- 'Server':['@'+SERVER+':/home/', '/bin/']},
- 'bin@host':{'Benutzer':['root'],
- 'Frage':[' von /', '/bin@'+CLIENT+'/'],
- 'Exclude':['--exclude', '__thereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__'],
- 'Client':['/','/bin/'],
- 'Server':['@'+SERVER+':/','/bin@'+CLIENT+'/']},
- 'musik':{'Benutzer':['share'],
- 'Frage':[' von /home/', '/Musik/'],
- 'Exclude':['--exclude', '__thereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__'],
- 'Client':['/home/', '/Musik/'],
- 'Server':['@'+SERVER+':/home/', '/Musik/']},
- '*.vdi':{'Benutzer':['share'],
- 'Frage':[' von /home/', '/software/virtualbox/winxp/'],
- 'Exclude':['--exclude', '__thereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__'],
- 'Client':['/home/', '/software/virtualbox/winxp/'],
- 'Server':['@'+SERVER+':/home/', '/software/virtualbox/winxp/']},
- '.irssi':{'Benutzer':['markus'],
- 'Frage':[' von /home/', '/.irssi'],
- 'Exclude':['--exclude', '__thereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__'],
- 'Client':['/home/', '/.irssi'],
- 'Server':['@'+SERVER+':/home/', '/.irssi']},
- }
- def rsync ():
- exclude_pre=eintrag['Exclude'][0]
- exclude_post=eintrag['Exclude'][1]
- if wasWillstDu == ('s' or 'S') :
- try:
- source=eintrag['Client'][0]+benutzer+eintrag['Client'][1]
- target=benutzer+eintrag['Server'][0]+benutzer+eintrag['Server'][1]
- child=pexpect.spawn('rsync',
- ['-e',
- 'ssh -l '+benutzer,
- '-a',
- '--delete-after',
- '--stats',
- '--progress',
- exclude_pre,
- exclude_post,
- source,
- target ])
- return child
- except Exception, e:
- print 'Fehler: '+str(e)
- elif wasWillstDu == ('z' or 'Z'):
- try:
- source=benutzer+eintrag['Server'][0]+benutzer+eintrag['Server'][1]
- target=eintrag['Client'][0]+benutzer+eintrag['Client'][1]
- child=pexpect.spawn('rsync',
- ['-e',
- 'ssh -l '+benutzer,
- '-a',
- '--delete-after',
- '--stats',
- '--progress',
- exclude_pre,
- exclude_post,
- source,
- target ])
- return child
- except Exception, e:
- print 'Fehler: '+str(e)
- for eintrag in katalog.itervalues():
- for benutzer in eintrag['Benutzer']:
- wasWillstDu=raw_input('(S)ichern/(Z)urueckspielen/(N)ichts/(A)bbrechen'+eintrag['Frage'][0]+benutzer+eintrag['Frage'][1]+' ? (s/z/n/a) ')
- passwort=benutzer_passwoerter.get(benutzer, '')
- if wasWillstDu in 'sSzZ' and wasWillstDu not in '':
- child=rsync()
- child.logfile_read = sys.stdout
- while child.isalive():
- statusChild=child.expect([' password:', 'denied', pexpect.TIMEOUT, pexpect.EOF], timeout=-1)
- if statusChild == 0:
- child.sendline(passwort)
- elif statusChild == 1:
- passwort=getpass.getpass('')
- # passwort=sys.stdin.readline()
- benutzer_passwoerter[benutzer]=passwort
- child.sendline(passwort)
- elif wasWillstDu in 'aAqQ' and wasWillstDu not in '':
- sys.exit(0)
- else:
- print 'Es wird keine Sicherung durchgefuehrt fuer '+CLIENT+' !'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement