Traceback (most recent call last):
File "winbackup.py", line 201, in
wba_versions_process=subprocess.Popen(param_encode(wba_versions_args, locale.getdefaultlocale()[1] ), executable=wbadmin_bin, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
File "C:\python3\lib\subprocess.py", line 854, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\python3\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
F:\Programming\python\Windows Backup>python
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
any help would be appreciated, more then happy to donate, probably a windows rights / permissions issue but cant figure it out ?
thanks
Version of Python and pywin32
3.8.10 / pywin32-303
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import COMMASPACE, formatdate
from email import encoders
def param_encode(lst, encoding, errors='strict'):
"""return a new encoded list of string"""
if isinstance(lst, list):
newlst=lst[:]
for i, v in enumerate(lst):
newlst[i]=v.encode(encoding, errors)
return newlst
elif isinstance(lst, unicode):
return lst.encode(encoding, errors)
else:
return lst
See code below đ
works as is on win 11
but not Server 2019 which is based on win 10?
When i run on the server version I get đ
Starting Backup .... C:\Windows\system32\wbadmin.exe ['wbadmin.exe', 'start', 'backup', '-backuptarget:\\10.0.0.2\images', '-include:C:', '-allcritical', '-quiet'] [b'wbadmin.exe', b'start', b'backup', b'-backuptarget:\\10.0.0.2\images', b'-include:C:', b'-allcritical', b'-quiet']
Traceback (most recent call last): File "winbackup.py", line 201, in
wba_versions_process=subprocess.Popen(param_encode(wba_versions_args, locale.getdefaultlocale()[1] ), executable=wbadmin_bin, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
File "C:\python3\lib\subprocess.py", line 854, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\python3\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
F:\Programming\python\Windows Backup>python Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information.
any help would be appreciated, more then happy to donate, probably a windows rights / permissions issue but cant figure it out ?
thanks
!/usr/local/bin/python3
import os, sys, socket, struct, select, time import logging, logging.handlers, traceback import win32serviceutil import servicemanager,win32evtlogutil,win32evtlog import win32event,subprocess import win32service,win32api,win32timezone from multiprocessing import Process, freeze_support
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.mime.text import MIMEText from email.utils import COMMASPACE, formatdate from email import encoders
import platform, locale
from optparse import OptionParser USAGE_TEXT = '''\ usage: %%prog %s[options] '''
parser = OptionParser(usage=USAGE_TEXT % '', version='0.4')
parser.add_option("-m", "--mail", dest="mail_to", help="Email Report To", default = 'monitor@scom.ca') parser.add_option("-d", "--destination", dest="destination", help="Destination Path")
options, args = parser.parse_args()
print (options.mail_to) print (options.destination)
if options.destination == None : print ('No Destination Provided') print ('Exiting .....') sys.exit()
options.destination = options.destination.replace('\','\\' )
print (options.destination)
print ('Starting Backup ....')
def param_encode(lst, encoding, errors='strict'): """return a new encoded list of string""" if isinstance(lst, list): newlst=lst[:] for i, v in enumerate(lst): newlst[i]=v.encode(encoding, errors) return newlst elif isinstance(lst, unicode): return lst.encode(encoding, errors) else: return lst
name='wbadmin' exe='wbadmin.exe'
C:\Windows\System32\WindowsPowerShell\v1.0
systemroot=os.environ.get('SystemRoot', os.environ.get('windir', 'C:\windows')) wbadmin_bin=os.path.join(systemroot, 'system32', 'wbadmin.exe') wevtutil_bin=os.path.join(systemroot, 'system32', 'wevtutil.exe')
print (wbadmin_bin)
wba_versions_args=[ exe, 'get', 'versions', ]
wba_versions_args=[ exe, 'start', 'backup','-backuptarget:%s' %options.destination, '-include:C:', '-allcritical', '-quiet' ]
print (wba_versions_args) print (param_encode(wba_versions_args, locale.getdefaultlocale()[1] ) ) print ()
wba_versions_process=subprocess.Popen(param_encode(wba_versions_args, locale.getdefaultlocale()[1] ), executable=wbadmin_bin, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) wba_versions_out, wba_versions_err=wba_versions_process.communicate()
wba_versions_out = str( wba_versions_out).split('\r\n') wba_versions_err = str( wba_versions_err).split('\r\n')
out = '' error = ''
for n in range (0,len(wba_versions_out)) : print (wba_versions_out[n]) out = out + wba_versions_out[n] + '\n'
print () print ()
for n in range (0,len(wba_versions_err)) : print (wba_versions_err[n]) error = error + wba_versions_err[n] + '\n'