-
Notifications
You must be signed in to change notification settings - Fork 1
/
example_upgrade.py
76 lines (63 loc) · 2.45 KB
/
example_upgrade.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"""Copyright (c) 2019 Cisco and/or its affiliates.
This software is licensed to you under the terms of the Cisco Sample
Code License, Version 1.1 (the "License"). You may obtain a copy of the
License at
https://developer.cisco.com/docs/licenses
All use of the material herein must be in accordance with the terms of
the License. All rights not expressly granted by the License are
reserved. Unless required by applicable law or agreed to separately in
writing, software distributed under the License is distributed on an "AS
IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied.
"""
__author__ = "Josh Bronikowski <[email protected]>"
__copyright__ = "Copyright (c) 2019 Cisco and/or its affiliates."
__license__ = "Cisco Sample Code License, Version 1.1"
from ftd_connector import ftd_connection
# Defining device variables
# param: ip
# param: username
# param: password
# param: remote_server
# param: remote_path - path must start and end with /
# param: remote_username
# param: remote_password
# param: image_name - image file name
# param: image_hash - image hash
# param: snort_level - snort level that FMC is running
# param: verbose - default is set to False. This will stdout to shell
# param: debug_level - default is DEBUG. Typical python logging levls
my_device = {
"ip": "10.0.0.1",
"username": "admin",
"password": "C1sco12345",
"remote_server": "10.0.0.2",
"remote_path": "/var/files/",
"remote_username": "administrator",
"remote_password": "C1sco12345",
"image_name": "Cisco_FTD_Patch-6.2.0.5-38.sh",
"image_hash": "d906de5be2a19dd7a1c21282aa84636b",
"snort_level": "2.9.12",
}
# Creating connection to device
device = ftd_connection(**my_device)
# Get image from scp server if does not exist
if not device.image_exist():
device.get_image_from_server()
# Check image md5 hash compared to servers. If it does not match quit
if not device.check_image():
quit()
# Checking Snort level
if not device.check_snort_verison():
quit()
# Start upgrade in detach mode
device.start_upgrade()
# If upgrade is successfull device will reboot and return true.
# If failed it will return false
if not device.monitor_upgrade():
# Uploading upgrade logs
device.upload_image_logs()
# Generating Troubleshoot
device.generate_troubleshoot_file()
# Upload Troubleshoot
device.upload_troubleshoot()