You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.5 KiB

  1. from argparse import ArgumentParser
  2. from pathlib import Path
  3. from openwrt_backup.retrieve import make_backup_on_remote, retrieve_backup_on_remote
  4. from openwrt_backup.utils import (
  5. client_from_config,
  6. exec_remote,
  7. get_new_backup_filepath,
  8. )
  9. from openwrt_backup.config import CONFIG_DATA
  10. def do_backup(
  11. config_hostname,
  12. ssh_config_root: Path,
  13. backup_path: Path,
  14. tmp_path: Path,
  15. time_format,
  16. dry,
  17. ):
  18. client = client_from_config(config_hostname, ssh_config_root)
  19. stdout, stderr = exec_remote(client, "echo $HOSTNAME")
  20. hostname = stdout.read().decode().rstrip()
  21. dest = get_new_backup_filepath(backup_path, time_format, hostname)
  22. backup_on_remote = make_backup_on_remote(client, tmp_path)
  23. retrieve_backup_on_remote(client, backup_on_remote, dest)
  24. def main():
  25. parser = ArgumentParser()
  26. parser.add_argument("-d", "--dry", action="store_true", help="Don't do anything")
  27. parser.add_argument("--dump-config", action="store_true", help="Show config")
  28. parser.add_argument(
  29. "-c" "--config", help="config path for backup script", default=None
  30. )
  31. parser.add_argument(
  32. "name", help="hostname in ssh_config file for openwrt device we need to backup"
  33. )
  34. args = parser.parse_args()
  35. do_backup(
  36. args.name,
  37. Path(CONFIG_DATA["ssh"]["root"]).expanduser(),
  38. Path(CONFIG_DATA["backup"]["path"]).expanduser(),
  39. Path(CONFIG_DATA["router"]["temp"]),
  40. CONFIG_DATA["backup"]["time_format"],
  41. args.dry,
  42. )