filelist doesn't work anymore, correct, and you can file get via the cli as well. Neither is a "bulk" way to download and can be a lot of work. :) We just need a 1 click button to copy all extra files from one node to another
On Wed, Jun 6, 2018 at 10:35 AM Ryan Ratliff (rratliff) <rratl...@cisco.com> wrote: > If you know the files you can use curl or your favorite http package to > get them http://tftp.ip:6970/. > > On some versions you can get http://tftp.ip:6970/filelist.txt to get an > index of files. I think that file went away in 11.5 or 12.0 with > enhancements made to serving static files. > > -Ryan > > On Jun 6, 2018, at 10:18 AM, Charles Goldsmith <wo...@justfamily.org> > wrote: > > Thanks very much for this! Has anyone worked out an easy way to bulk > download this data? Say you have to rebuild or add a node to an existing > cluster and the customer doesn't have all of this info archived properly? > > > On Mon, Jun 4, 2018 at 1:20 PM Brian Meade <bmead...@vt.edu> wrote: > >> Now on Github- https://github.com/bmeade90/BulkTFTP >> >> On Mon, Jun 4, 2018 at 8:47 AM, Brian Meade <bmead...@vt.edu> wrote: >> >>> Thanks for cleaning that up Anthony! >>> >>> My main goal with this is to bulk upload entire directories and all the >>> sub-directories so I can easily upload all the Desktops directories and >>> such. >>> >>> Since I'm bulk uploading so many files, I decided to just do a single >>> node at a time but your edit should work fine to make this multi-node. >>> >>> Attached my finalized script I was able to use to upload a few hundred >>> files to a 4-node cluster on Friday. >>> >>> On Sat, Jun 2, 2018 at 3:19 PM, Anthony Holloway < >>> avholloway+cisco-v...@gmail.com> wrote: >>> >>>> Here's your code re-worked a little Brian, for you or for anyone else, >>>> and I tested it on 11.5 and it works. I did not put in any error handling, >>>> so I'll leave that up to you. You can do things like Try/Catch or checking >>>> for resp.status_code == 200, file existence checking, etc. I figure, >>>> knowing how to make it work was the challenge, not error handling, so I >>>> left that out. >>>> >>>> # Install Python 2.7 and choose the option to add to path (off by >>>> default) >>>> # Then install two modules >>>> # C:\>pip install requests >>>> # C:\>pip install BeautifulSoup >>>> # Then run the program >>>> # C:\>python tftp.py >>>> >>>> import requests >>>> from BeautifulSoup import BeautifulSoup >>>> requests.packages.urllib3.disable_warnings() >>>> >>>> tftp_host = "" >>>> tftp_user = "" >>>> tftp_pass = "" >>>> tftp_file = "" >>>> tftp_path = "" >>>> >>>> url_base = "https://{}/cmplatform/".format(tftp_host) >>>> url_login = "{}j_security_check".format(url_base) >>>> url_upload = "{}tftpFileUpload.do".format(url_base) >>>> >>>> # Allows us to keep track of our login session >>>> print "\nLogging in to {}...".format(tftp_host), >>>> connection = requests.Session() >>>> >>>> # Start a new session by simply access a page on the server >>>> resp = connection.get(url_base, verify = False) >>>> >>>> # Our login form data >>>> form_data = { >>>> "appNav": "cmplatform", >>>> "j_username": tftp_user, >>>> "j_password": tftp_pass >>>> } >>>> >>>> # Our login submission to the server >>>> resp = connection.post(url_login, verify = False, data = form_data) >>>> print "Success!\n" >>>> >>>> # We need to grab the token the server gives us, so we can pass it back >>>> upon upload >>>> print "Grabbing a new token...", >>>> soup = BeautifulSoup(connection.get(url_upload, verify = False).content) >>>> >>>> # It's a hidden input element on the upload form with the name of >>>> "token" >>>> token = soup.find("input", {"name": "token"}).get("value") >>>> print "Found! [{}]\n".format(token) >>>> >>>> # Our upload form submission data >>>> payload = { >>>> "struts.token.name": (None, "token"), >>>> "token": (None, token), >>>> "file": (tftp_file, open(tftp_file, "rb"), {"Content-Type": >>>> "text/plain"}), >>>> "directory": (None, tftp_path) >>>> } >>>> >>>> # Our upload submission to the server >>>> print "Uploading file: {}...".format(tftp_file), >>>> resp = connection.post(url_upload, verify = False, files = payload) >>>> print "Success!\n" >>>> >>>> print "Done!" >>>> >>>> If you want multiple server/multiple file support, it's really just a >>>> small modification (highlighted in red): >>>> >>>> # Install Python 2.7 and choose the option to add to path (off by >>>> default) >>>> # Then install two modules >>>> # C:\>pip install requests >>>> # C:\>pip install BeautifulSoup >>>> # Then run the program >>>> # C:\>python tftp.py >>>> >>>> import requests >>>> from BeautifulSoup import BeautifulSoup >>>> requests.packages.urllib3.disable_warnings() >>>> >>>> tftp_hosts = [ >>>> "host1", >>>> "hostN" >>>> ] >>>> tftp_user = "" >>>> tftp_pass = "" >>>> >>>> tftp_files = [ >>>> "file1", >>>> "fileN" >>>> ] >>>> tftp_path = "" >>>> >>>> for tftp_host in tftp_hosts: >>>> >>>> url_base = "https://{}/cmplatform/".format(tftp_host) >>>> url_login = "{}j_security_check".format(url_base) >>>> url_upload = "{}tftpFileUpload.do".format(url_base) >>>> >>>> # Allows us to keep track of our login session >>>> print "\nLogging in to {}...".format(tftp_host), >>>> connection = requests.Session() >>>> >>>> # Start a new session by simply access a page on the server >>>> resp = connection.get(url_base, verify = False) >>>> >>>> # Our login form data >>>> form_data = { >>>> "appNav": "cmplatform", >>>> "j_username": tftp_user, >>>> "j_password": tftp_pass >>>> } >>>> >>>> # Our login submission to the server >>>> resp = connection.post(url_login, verify = False, data = form_data) >>>> print "Success!\n" >>>> for tftp_file in tftp_files: >>>> >>>> # We need to grab the token the server gives us, so we can pass it back >>>> upon upload >>>> print "Grabbing a new token...", >>>> soup = BeautifulSoup(connection.get(url_upload, verify = False).content) >>>> >>>> # It's a hidden input element on the upload form with the name of >>>> "token" >>>> token = soup.find("input", {"name": "token"}).get("value") >>>> print "Found! [{}]\n".format(token) >>>> >>>> # Our upload form submission data >>>> payload = { >>>> "struts.token.name": (None, "token"), >>>> "token": (None, token), >>>> "file": (tftp_file, open(tftp_file, "rb"), {"Content-Type": >>>> "text/plain"}), >>>> "directory": (None, tftp_path) >>>> } >>>> >>>> # Our upload submission to the server >>>> print "Uploading file: {}...".format(tftp_file), >>>> resp = connection.post(url_upload, verify = False, files = payload) >>>> print "Success!\n" >>>> >>>> print "Done!" >>>> >>>> On Fri, Jun 1, 2018 at 3:38 PM Brian Meade <bmead...@vt.edu> wrote: >>>> >>>>> So just re-read through everything and sure enough I was sending to >>>>> the wrong IP when running the script. No wonder it's shown as uploading >>>>> successfully the entire time. >>>>> >>>>> Thanks for you and Stephen's assistance! >>>>> >>>>> Tommy, BTW you can remove a lot of the manual set headers if you want >>>>> to clean yours up. It seems to work without them. >>>>> >>>>> Thanks, >>>>> Brian Meade >>>>> >>>>> On Fri, Jun 1, 2018 at 4:10 PM, Schlotterer, Tommy < >>>>> tschlotte...@presidio.com> wrote: >>>>> >>>>>> >>>>>> >>>>>> >>>>>> Just tested on CUCM 11.5, worked just fine. >>>>>> >>>>>> >>>>>> >>>>>> Thanks >>>>>> >>>>>> >>>>>> Tommy >>>>>> >>>>>> >>>>>> >>>>>> *From:* bmead...@gmail.com [mailto:bmead...@gmail.com] *On Behalf Of >>>>>> *Brian Meade >>>>>> *Sent:* Friday, June 1, 2018 4:06 PM >>>>>> *To:* Schlotterer, Tommy <tschlotte...@presidio.com> >>>>>> *Cc:* cisco-voip voyp list <cisco-voip@puck.nether.net> >>>>>> *Subject:* Re: [cisco-voip] CUCM Bulk TFTP File Upload >>>>>> >>>>>> >>>>>> >>>>>> *EXTERNAL EMAIL* >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Thanks Tommy! >>>>>> >>>>>> >>>>>> >>>>>> Have you tested against CUCM 11.x okay? >>>>>> >>>>>> >>>>>> >>>>>> I need to build the dependencies to fully run yours. I tried pulling >>>>>> out the important upload code but seeing the same issue I'm having with >>>>>> my >>>>>> code. >>>>>> >>>>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Brian Meade >>>>>> >>>>>> >>>>>> >>>>>> On Fri, Jun 1, 2018 at 1:18 PM, Schlotterer, Tommy < >>>>>> tschlotte...@presidio.com> wrote: >>>>>> >>>>>> Brian, >>>>>> >>>>>> >>>>>> >>>>>> Here is my really hacky python script to do this. >>>>>> >>>>>> >>>>>> >>>>>> Thanks >>>>>> >>>>>> >>>>>> Tommy >>>>>> >>>>>> >>>>>> >>>>>> *From:* cisco-voip [mailto:cisco-voip-boun...@puck.nether.net] *On >>>>>> Behalf Of *Brian Meade >>>>>> *Sent:* Friday, June 1, 2018 9:54 AM >>>>>> *To:* cisco-voip voyp list <cisco-voip@puck.nether.net> >>>>>> *Subject:* [cisco-voip] CUCM Bulk TFTP File Upload >>>>>> >>>>>> >>>>>> >>>>>> *EXTERNAL EMAIL* >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Does anyone have a working script for this? >>>>>> >>>>>> >>>>>> >>>>>> I put together a script in python to do this but hitting some issues. >>>>>> >>>>>> >>>>>> >>>>>> Right now I’ve got it to the point that it’s trying to upload a >>>>>> single file. >>>>>> >>>>>> >>>>>> >>>>>> I used Fiddler to copy what I saw for a working request through a >>>>>> browser. >>>>>> >>>>>> >>>>>> >>>>>> I first do a Get to the cmplatform page to get a cookie. >>>>>> >>>>>> >>>>>> >>>>>> I then do a Post to the /cmplatform/j_security_check page to >>>>>> authenticate that cookie. >>>>>> >>>>>> >>>>>> >>>>>> I then do a Get to /cmplatform/tftpFileUpload.do to get a Struts >>>>>> Token. >>>>>> >>>>>> >>>>>> >>>>>> I then do a Post to /cmplatform/tftpFileUpload.do with the Struts >>>>>> token, filename, and directory details. >>>>>> >>>>>> >>>>>> >>>>>> This looks to be successful as I get a "File uploaded successfully" >>>>>> message returned but then I can't find the file on the TFTP File >>>>>> Management >>>>>> page. >>>>>> >>>>>> >>>>>> >>>>>> I tried using the curl methods I found here ( >>>>>> https://communities.cisco.com/docs/DOC-43506 ) but no luck there. >>>>>> Not sure if this works in 11.5 without grabbing the Struts token. >>>>>> Without >>>>>> a token, I get an error message saying something to the affect of I hit >>>>>> the >>>>>> Submit button twice. >>>>>> >>>>>> >>>>>> >>>>>> Here's what it looks like when my script runs in Fiddler: >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> This looks almost exactly like the real example through a browser I >>>>>> captured minus a few headers I tried manually adding with no luck. >>>>>> >>>>>> >>>>>> >>>>>> Python script attached. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> * Tommy Schlotterer | Systems Engineer - Collaboration Presidio >>>>>> (NASDAQ: PSDO) | presidio.com <http://presidio.com/> 20 N Saint Clair 3rd >>>>>> Floor, Toledo, OH 43604 >>>>>> <https://maps.google.com/?q=20+N+Saint+Clair+3rd+Floor,+Toledo,+OH+43604&entry=gmail&source=g> >>>>>> D: 419.214.1415 <(419)%20214-1415> | C: 419.706.0259 <(419)%20706-0259> | >>>>>> tschlotte...@presidio.com <tschlotte...@presidio.com>* >>>>>> >>>>>> >>>>>> >>>>>> * [image: Future. Built.] <http://www.presidio.com/>* >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> * Follow us: [image: Follow Presidio on Twitter] >>>>>> <http://www.twitter.com/presidio>* >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> *This message w/attachments (message) is intended solely for the use >>>>>> of the intended recipient(s) and may contain information that is >>>>>> privileged, confidential or proprietary. If you are not an intended >>>>>> recipient, please notify the sender, and then please delete and destroy >>>>>> all >>>>>> copies and attachments. Please be advised that any review or >>>>>> dissemination >>>>>> of, or the taking of any action in reliance on, the information contained >>>>>> in or attached to this message is prohibited.* >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> [image: Future. Built.] <http://www.presidio.com/> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> Follow us: >>>>>> >>>>>> [image: Follow Presidio on Twitter] <http://www.twitter.com/presidio> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> _______________________________________________ >>>>> cisco-voip mailing list >>>>> cisco-voip@puck.nether.net >>>>> https://puck.nether.net/mailman/listinfo/cisco-voip >>>>> >>>> >>> >> _______________________________________________ >> cisco-voip mailing list >> cisco-voip@puck.nether.net >> https://puck.nether.net/mailman/listinfo/cisco-voip >> > _______________________________________________ > cisco-voip mailing list > cisco-voip@puck.nether.net > https://puck.nether.net/mailman/listinfo/cisco-voip > >
_______________________________________________ cisco-voip mailing list cisco-voip@puck.nether.net https://puck.nether.net/mailman/listinfo/cisco-voip