#!/usr/bin/env python3
"""Collect Linux-wide file descriptor counters for Checkmk."""

from pathlib import Path

FILE_NR = Path("/proc/sys/fs/file-nr")


def main() -> int:
    try:
        fields = FILE_NR.read_text(encoding="ascii").split()
        if len(fields) != 3:
            raise ValueError(f"expected 3 fields, got {len(fields)}")

        allocated, unused, maximum = (int(value) for value in fields)
        if min(allocated, unused, maximum) < 0:
            raise ValueError("file-nr contains a negative value")
        if maximum == 0:
            raise ValueError("system file descriptor maximum is zero")
    except (OSError, ValueError) as exc:
        print("<<<linux_file_descriptor_usage>>>")
        print(f"error {type(exc).__name__}: {exc}")
        return 0

    print("<<<linux_file_descriptor_usage>>>")
    print(f"{allocated} {unused} {maximum}")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
