LinuxMonitor


NameLinuxMonitor JSON
Version 1.5.6 PyPI version JSON
download
home_pagehttps://github.com/QuentinCG/Linux-Monitor-Python-Library
SummaryGet information and warning status of Linux server like service, port, ping, ssl certificate, disk/folder/cpu/ram/swap usage, ip connection, ... (Python and shell library, Linux ONLY)
upload_time2024-11-03 16:04:20
maintainerNone
docs_urlNone
authorQuentin Comte-Gaz
requires_python>=3.3
licenseMIT
keywords linux monitor monitoring server service port ping ssl certificate disk folder cpu ram swap usage ip connection
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Linux Monitor (Python library)
[![PyPI version](https://badge.fury.io/py/LinuxMonitor.svg)](https://pypi.org/project/LinuxMonitor/) [![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://github.com/QuentinCG/Linux-Monitor-Python-Library/blob/master/LICENSE.md) [![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://paypal.me/QuentinCG) [![Downloads](https://static.pepy.tech/badge/LinuxMonitor)](https://pepy.tech/project/LinuxMonitor) [![Downloads](https://static.pepy.tech/badge/LinuxMonitor/month)](https://pepy.tech/project/LinuxMonitor)

## What is it

This python library is designed to be integrated in python or shell projects to monitor Linux servers.
It is compatible with python 3+ and usable only on Linux.

It is also designed to be easily integrated in discussion channel bots python scripts (example: [Discord Bot Linux Monitor](https://github.com/QuentinCG/Discord-Bot-Linux-Monitor-Python-Library))

<img src="https://github.com/QuentinCG/Linux-Monitor-Python-Library/raw/master/welcome.png" width="300">

## Functionalities

Most important functionalities:
  - Do all checks bellow in a scheduled tasks and display the results only if there is an issue (only in console if using only the library)
  - Do all checks bellow in a scheduled tasks and display the results every time (only in console if using only the library)

List of 'check' functionalities:
  - Check CPU, RAM, SWAP, Temperature
  - Check disk usage
  - Check folder usage
  - Check websites basic availability (ping)
  - Check websites access with optional authentication (GET request)
  - Check services status and restart them if needed
  - Check certificates expiration and validity
  - Check last user connections IPs
  - Check uptime (to inform if the server has been rebooted)
  - Check custom commands

Additionnal functionalities:
  - Get hostname, OS details, kernel version, server datetime, uptime
  - Get connected users
  - Get processes list (PID and name)
  - Kill a process by PID
  - Reboot server
  - Restart/stop a service
  - Execute custom commands

## How to install (python script and shell)

  - Install package calling `pip install linux-monitor` (or `python setup.py install` from the root of this repository)
  - Copy and edit [config-example.json file](https://github.com/QuentinCG/Linux-Monitor-Python-Library/blob/master/config-example.json) depending on your need (on first launch, remove all `restart_command` from config file to prevent potential looping service restart issues on your server in case your config file is not well configured)
  - Add rights to user launching the library depending on what you want it to do
```sh
# Only if this library should be able to reboot the server on demand:
echo "USERNAME_HERE ALL=(ALL) NOPASSWD: /sbin/reboot" >> /etc/sudoers.d/USERNAME_HERE
# Only if this library should be able to kill a process on demand:
echo "USERNAME_HERE ALL=(ALL) NOPASSWD: /bin/kill" >> /etc/sudoers.d/USERNAME_HERE

# To check last user connection
echo "USERNAME_HERE ALL=(ALL) NOPASSWD: /usr/bin/last" >> /etc/sudoers.d/USERNAME_HERE

# Add also all processes added in your config JSON file you want the library to be able to execute
# Example for the existing config-example.json file:
echo "USERNAME_HERE ALL=(ALL) NOPASSWD: /bin/systemctl" >> /etc/sudoers.d/USERNAME_HERE
echo "USERNAME_HERE ALL=(ALL) NOPASSWD: /etc/init.d/apache2" >> /etc/sudoers.d/USERNAME_HERE
echo "USERNAME_HERE ALL=(ALL) NOPASSWD: /etc/init.d/mariadb" >> /etc/sudoers.d/USERNAME_HERE
```
  - Check monitor possibilities (you can find it out by calling `python -m linuxmonitor --help` from the root of this repository)
  - Load your shell or python script

## How to use in shell

```sh
# Get help
python3 -m linuxmonitor --help
# Use "--debug" to show more information during command
# Use "--nodebug" to not show any warning information during command



# Start periodic task to show potential issues periodically (will run indefinitely)
# Best is to call this as a service and put the result in a log file or do something of the stdout
python3 -m linuxmonitor --start_scheduled_task_check_for_issues --config_file config-example.json --nodebug

# Start periodic task to show system information periodically (will run indefinitely)
# Best is to call this as a service and put the result in a log file or do something of the stdout
python3 -m linuxmonitor --start_scheduled_task_show_info --config_file config-example.json --nodebug



# View disk space, CPU, RAM, ...
python3 -m linuxmonitor --usage --config_file config-example.json --nodebug

# View basic system information
python3 -m linuxmonitor --os_infos --config_file config-example.json --nodebug

# View connected users
python3 -m linuxmonitor --users --config_file config-example.json --nodebug

# View last user connections
python3 -m linuxmonitor --user_logins --config_file config-example.json --nodebug

# Check websites (ping)
python3 -m linuxmonitor --ping --config_file config-example.json --nodebug

# Check websites access with optional authentication (GET request)
python3 -m linuxmonitor --websites --config_file config-example.json --nodebug

# Check SSL certificates
python3 -m linuxmonitor --certificates --config_file config-example.json --nodebug

# Check if services are running and restart if down
python3 -m linuxmonitor --services_status --config_file config-example.json --nodebug

# List all available services
python3 -m linuxmonitor --list_services --config_file config-example.json --nodebug

# Restart all services
python3 -m linuxmonitor --restart_all --config_file config-example.json --nodebug

# Restart a service
python3 -m linuxmonitor --restart_service SERVICE_NAME_HERE --config_file config-example.json --nodebug

# Stop a service
python3 -m linuxmonitor --stop_service SERVICE_NAME_HERE --config_file config-example.json --nodebug

# Check ports
python3 -m linuxmonitor --ports --config_file config-example.json --nodebug

# List active processes
python3 -m linuxmonitor --list_processes --config_file config-example.json --nodebug

# Stop a process by PID
python3 -m linuxmonitor --kill_process PID_HERE --config_file config-example.json --nodebug

# Restart the entire server
python3 -m linuxmonitor --reboot_server --config_file config-example.json --nodebug

# List all custom commands
python3 -m linuxmonitor --list_commands --config_file config-example.json --nodebug

# Execute a custom commands
python3 -m linuxmonitor --execute_command CUSTOM_COMMAND_HERE --config_file config-example.json --nodebug

# Execute all custom commands
python3 -m linuxmonitor --execute_all_commands --config_file config-example.json --nodebug
```

## How to use in python script

Example of python script using this library:
 - [Discord Bot Linux Monitor](https://github.com/QuentinCG/Discord-Bot-Linux-Monitor-Python-Library)

## License

This project is under MIT license. This means you can use it as you want (just don't delete the library header).

## Contribute

If you want to add more examples or improve the library, just create a pull request with proper commit message and right wrapping.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/QuentinCG/Linux-Monitor-Python-Library",
    "name": "LinuxMonitor",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.3",
    "maintainer_email": null,
    "keywords": "linux monitor monitoring server service port ping ssl certificate disk folder cpu ram swap usage ip connection",
    "author": "Quentin Comte-Gaz",
    "author_email": "quentin@comte-gaz.com",
    "download_url": "https://files.pythonhosted.org/packages/4e/f0/05ccae42d9b72d33b9ec79649663e0aefd4464c95a3d988db1ff4bb050c0/linuxmonitor-1.5.6.tar.gz",
    "platform": "Linux",
    "description": "# Linux Monitor (Python library)\n[![PyPI version](https://badge.fury.io/py/LinuxMonitor.svg)](https://pypi.org/project/LinuxMonitor/) [![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://github.com/QuentinCG/Linux-Monitor-Python-Library/blob/master/LICENSE.md) [![Donate](https://img.shields.io/badge/Donate-PayPal-blue.svg)](https://paypal.me/QuentinCG) [![Downloads](https://static.pepy.tech/badge/LinuxMonitor)](https://pepy.tech/project/LinuxMonitor) [![Downloads](https://static.pepy.tech/badge/LinuxMonitor/month)](https://pepy.tech/project/LinuxMonitor)\n\n## What is it\n\nThis python library is designed to be integrated in python or shell projects to monitor Linux servers.\nIt is compatible with python 3+ and usable only on Linux.\n\nIt is also designed to be easily integrated in discussion channel bots python scripts (example: [Discord Bot Linux Monitor](https://github.com/QuentinCG/Discord-Bot-Linux-Monitor-Python-Library))\n\n<img src=\"https://github.com/QuentinCG/Linux-Monitor-Python-Library/raw/master/welcome.png\" width=\"300\">\n\n## Functionalities\n\nMost important functionalities:\n  - Do all checks bellow in a scheduled tasks and display the results only if there is an issue (only in console if using only the library)\n  - Do all checks bellow in a scheduled tasks and display the results every time (only in console if using only the library)\n\nList of 'check' functionalities:\n  - Check CPU, RAM, SWAP, Temperature\n  - Check disk usage\n  - Check folder usage\n  - Check websites basic availability (ping)\n  - Check websites access with optional authentication (GET request)\n  - Check services status and restart them if needed\n  - Check certificates expiration and validity\n  - Check last user connections IPs\n  - Check uptime (to inform if the server has been rebooted)\n  - Check custom commands\n\nAdditionnal functionalities:\n  - Get hostname, OS details, kernel version, server datetime, uptime\n  - Get connected users\n  - Get processes list (PID and name)\n  - Kill a process by PID\n  - Reboot server\n  - Restart/stop a service\n  - Execute custom commands\n\n## How to install (python script and shell)\n\n  - Install package calling `pip install linux-monitor` (or `python setup.py install` from the root of this repository)\n  - Copy and edit [config-example.json file](https://github.com/QuentinCG/Linux-Monitor-Python-Library/blob/master/config-example.json) depending on your need (on first launch, remove all `restart_command` from config file to prevent potential looping service restart issues on your server in case your config file is not well configured)\n  - Add rights to user launching the library depending on what you want it to do\n```sh\n# Only if this library should be able to reboot the server on demand:\necho \"USERNAME_HERE ALL=(ALL) NOPASSWD: /sbin/reboot\" >> /etc/sudoers.d/USERNAME_HERE\n# Only if this library should be able to kill a process on demand:\necho \"USERNAME_HERE ALL=(ALL) NOPASSWD: /bin/kill\" >> /etc/sudoers.d/USERNAME_HERE\n\n# To check last user connection\necho \"USERNAME_HERE ALL=(ALL) NOPASSWD: /usr/bin/last\" >> /etc/sudoers.d/USERNAME_HERE\n\n# Add also all processes added in your config JSON file you want the library to be able to execute\n# Example for the existing config-example.json file:\necho \"USERNAME_HERE ALL=(ALL) NOPASSWD: /bin/systemctl\" >> /etc/sudoers.d/USERNAME_HERE\necho \"USERNAME_HERE ALL=(ALL) NOPASSWD: /etc/init.d/apache2\" >> /etc/sudoers.d/USERNAME_HERE\necho \"USERNAME_HERE ALL=(ALL) NOPASSWD: /etc/init.d/mariadb\" >> /etc/sudoers.d/USERNAME_HERE\n```\n  - Check monitor possibilities (you can find it out by calling `python -m linuxmonitor --help` from the root of this repository)\n  - Load your shell or python script\n\n## How to use in shell\n\n```sh\n# Get help\npython3 -m linuxmonitor --help\n# Use \"--debug\" to show more information during command\n# Use \"--nodebug\" to not show any warning information during command\n\n\n\n# Start periodic task to show potential issues periodically (will run indefinitely)\n# Best is to call this as a service and put the result in a log file or do something of the stdout\npython3 -m linuxmonitor --start_scheduled_task_check_for_issues --config_file config-example.json --nodebug\n\n# Start periodic task to show system information periodically (will run indefinitely)\n# Best is to call this as a service and put the result in a log file or do something of the stdout\npython3 -m linuxmonitor --start_scheduled_task_show_info --config_file config-example.json --nodebug\n\n\n\n# View disk space, CPU, RAM, ...\npython3 -m linuxmonitor --usage --config_file config-example.json --nodebug\n\n# View basic system information\npython3 -m linuxmonitor --os_infos --config_file config-example.json --nodebug\n\n# View connected users\npython3 -m linuxmonitor --users --config_file config-example.json --nodebug\n\n# View last user connections\npython3 -m linuxmonitor --user_logins --config_file config-example.json --nodebug\n\n# Check websites (ping)\npython3 -m linuxmonitor --ping --config_file config-example.json --nodebug\n\n# Check websites access with optional authentication (GET request)\npython3 -m linuxmonitor --websites --config_file config-example.json --nodebug\n\n# Check SSL certificates\npython3 -m linuxmonitor --certificates --config_file config-example.json --nodebug\n\n# Check if services are running and restart if down\npython3 -m linuxmonitor --services_status --config_file config-example.json --nodebug\n\n# List all available services\npython3 -m linuxmonitor --list_services --config_file config-example.json --nodebug\n\n# Restart all services\npython3 -m linuxmonitor --restart_all --config_file config-example.json --nodebug\n\n# Restart a service\npython3 -m linuxmonitor --restart_service SERVICE_NAME_HERE --config_file config-example.json --nodebug\n\n# Stop a service\npython3 -m linuxmonitor --stop_service SERVICE_NAME_HERE --config_file config-example.json --nodebug\n\n# Check ports\npython3 -m linuxmonitor --ports --config_file config-example.json --nodebug\n\n# List active processes\npython3 -m linuxmonitor --list_processes --config_file config-example.json --nodebug\n\n# Stop a process by PID\npython3 -m linuxmonitor --kill_process PID_HERE --config_file config-example.json --nodebug\n\n# Restart the entire server\npython3 -m linuxmonitor --reboot_server --config_file config-example.json --nodebug\n\n# List all custom commands\npython3 -m linuxmonitor --list_commands --config_file config-example.json --nodebug\n\n# Execute a custom commands\npython3 -m linuxmonitor --execute_command CUSTOM_COMMAND_HERE --config_file config-example.json --nodebug\n\n# Execute all custom commands\npython3 -m linuxmonitor --execute_all_commands --config_file config-example.json --nodebug\n```\n\n## How to use in python script\n\nExample of python script using this library:\n - [Discord Bot Linux Monitor](https://github.com/QuentinCG/Discord-Bot-Linux-Monitor-Python-Library)\n\n## License\n\nThis project is under MIT license. This means you can use it as you want (just don't delete the library header).\n\n## Contribute\n\nIf you want to add more examples or improve the library, just create a pull request with proper commit message and right wrapping.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Get information and warning status of Linux server like service, port, ping, ssl certificate, disk/folder/cpu/ram/swap usage, ip connection, ... (Python and shell library, Linux ONLY)",
    "version": "1.5.6",
    "project_urls": {
        "Homepage": "https://github.com/QuentinCG/Linux-Monitor-Python-Library"
    },
    "split_keywords": [
        "linux",
        "monitor",
        "monitoring",
        "server",
        "service",
        "port",
        "ping",
        "ssl",
        "certificate",
        "disk",
        "folder",
        "cpu",
        "ram",
        "swap",
        "usage",
        "ip",
        "connection"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "15ad79df19d6990df856d5a47992efea3bdd19b0f93a66b64df951109b8792c4",
                "md5": "d0b6071a57cac798759b6d8d3da41ca0",
                "sha256": "03849bfa520b95c2e2b4b444f3e3dd229c34cb139bf43ca77ccb098e746dc247"
            },
            "downloads": -1,
            "filename": "LinuxMonitor-1.5.6-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d0b6071a57cac798759b6d8d3da41ca0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.3",
            "size": 26253,
            "upload_time": "2024-11-03T16:04:18",
            "upload_time_iso_8601": "2024-11-03T16:04:18.849157Z",
            "url": "https://files.pythonhosted.org/packages/15/ad/79df19d6990df856d5a47992efea3bdd19b0f93a66b64df951109b8792c4/LinuxMonitor-1.5.6-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4ef005ccae42d9b72d33b9ec79649663e0aefd4464c95a3d988db1ff4bb050c0",
                "md5": "52c27ed10e81ed5ba0430bf5cf60f783",
                "sha256": "c7c7f00ee344e271ccb1e23618ec0d5851fe35df64fe9f6d3b145ffedc93e92a"
            },
            "downloads": -1,
            "filename": "linuxmonitor-1.5.6.tar.gz",
            "has_sig": false,
            "md5_digest": "52c27ed10e81ed5ba0430bf5cf60f783",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.3",
            "size": 25521,
            "upload_time": "2024-11-03T16:04:20",
            "upload_time_iso_8601": "2024-11-03T16:04:20.292390Z",
            "url": "https://files.pythonhosted.org/packages/4e/f0/05ccae42d9b72d33b9ec79649663e0aefd4464c95a3d988db1ff4bb050c0/linuxmonitor-1.5.6.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-03 16:04:20",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "QuentinCG",
    "github_project": "Linux-Monitor-Python-Library",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "linuxmonitor"
}
        
Elapsed time: 0.43001s