scsd-configs/code/backup_wlcs.py

51 lines
1.9 KiB
Python

import pexpect
import argparse
import os
import tempfile
def backup_wlc(ip, username, password,filename):
print(f"Backing up WLC {ip}")
print(f"Logging in with {username} and {password}")
child = pexpect.spawn(f"ssh -oHostKeyAlgorithms=+ssh-ed25519 {username}@{ip}")
child.expect("password:")
child.sendline(password)
child.expect("#")
prompt = child.before.lstrip().decode("utf-8") + "#"
prompt = prompt.replace("(","\(")
prompt = prompt.replace(")","\)")
prompt = prompt.replace("*","\*")
prompt = prompt.replace("[","\[")
prompt = prompt.replace("]","\]")
child.sendline("no paging")
child.expect(prompt)
child.sendline("show running")
child.expect(prompt)
#print(child.before)
running_config=child.before.decode("utf-8")
running_config = running_config.replace("\r\n","\n")
# Write to a temporary file
with tempfile.NamedTemporaryFile(delete=False, mode="w",
encoding="utf-8",dir=os.path.dirname(filename)) as temp_file:
temp_file.write(running_config)
temp_file_path = temp_file.name
# Rename the temporary file to the desired output file
try:
os.rename(temp_file_path, filename)
print(f"Backup saved to {filename}")
except Exception as e:
print(f"Failed to save backup: {e}")
os.remove(temp_file_path) # Clean up the temporary file
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="backup aruba wlc")
parser.add_argument("--username", help="Username for login", required=True)
parser.add_argument("--password", help="Password for login", required=True)
parser.add_argument("--ip", help="IP address of WLC", required=True)
parser.add_argument("--filename", help="filename to save file", required=True)
args = parser.parse_args()
backup_wlc(args.ip, args.username, args.password,args.filename)