Skip to content

Instantly share code, notes, and snippets.

@danielbene
Created July 25, 2021 10:14
Show Gist options
  • Save danielbene/57f1fdf6d5d49b1c44ae85cf98d6250b to your computer and use it in GitHub Desktop.
Save danielbene/57f1fdf6d5d49b1c44ae85cf98d6250b to your computer and use it in GitHub Desktop.

Revisions

  1. danielbene created this gist Jul 25, 2021.
    42 changes: 42 additions & 0 deletions nas_free_discord.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,42 @@
    # automate reporting after homlab starts with below cronjob:
    # @reboot sleep 60 && python3 <path_to_script>

    import logging
    import requests
    import shutil
    from datetime import datetime

    target = '<mount_path>'
    ts_format = '%Y.%m.%d %H:%M:%S'
    logging.basicConfig(filename='<log_file_path>',
    filemode='a',
    format='%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s',
    datefmt=ts_format,
    level=logging.INFO) # logging.DEBUG for verbosity
    url = '<discord_channel_webhook_url>'


    # KB:2**10, MB:2**20, GB:2**30 etc (1024=2**10)
    def get_free_space():
    free = shutil.disk_usage(target).free
    return str(free // (2**20)) + 'MB'


    def get_ts():
    now = datetime.now()
    return now.strftime(ts_format)


    available = get_free_space()
    data = {
    'content': f'{get_ts()} - Available space on device: {available}'
    }

    try:
    logging.info('request start')
    result = requests.post(url, json=data)
    result.raise_for_status()
    except Exception as err:
    logging.error(f'request error: {err}')
    else:
    logging.info(f'request success: {result.status_code}, value: {available}')