All Projects → HorlogeSkynet → Archey4

HorlogeSkynet / Archey4

Licence: other
💻 Maintained fork of the original Archey Linux system tool

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to Archey4

Stacer
Linux System Optimizer and Monitoring - https://oguzhaninan.github.io/Stacer-Web
Stars: ✭ 7,405 (+6175.42%)
Mutual labels:  monitoring, system-information
yaf
Yet another system fetch that is minimal and customizable
Stars: ✭ 23 (-80.51%)
Mutual labels:  screenshot, system-information
Winfetch
🛠 A command-line system information utility written in PowerShell. Like Neofetch, but for Windows.
Stars: ✭ 189 (+60.17%)
Mutual labels:  screenshot, system-information
Amon
Amon is a modern server monitoring platform.
Stars: ✭ 1,331 (+1027.97%)
Mutual labels:  monitoring, system-information
Anjay
C implementation of the client-side OMA LwM2M protocol
Stars: ✭ 115 (-2.54%)
Mutual labels:  monitoring
Check docker
Nagios plugin to check docker containers
Stars: ✭ 113 (-4.24%)
Mutual labels:  monitoring
Graylog Plugin Slack
Graylog alarm callback for Slack
Stars: ✭ 110 (-6.78%)
Mutual labels:  monitoring
Heplify Server
HEP Capture Server
Stars: ✭ 110 (-6.78%)
Mutual labels:  monitoring
Flexlib
FlexLib是一个基于flexbox模型,使用xml文件进行界面布局的框架,融合了web快速布局的能力,让iOS界面开发像写网页一样简单快速
Stars: ✭ 1,569 (+1229.66%)
Mutual labels:  screenshot
Cfg2html
cfg2html is a UNIX shell script similar to supportinfo, getsysinfo or get_config, except that it creates a HTML (and plain ASCII) system documentation for HP-UX, SCO-UNIX, AIX, Sun OS and Linux systems. Plug-ins for SAP, Oracle, Informix, Serviceguard, Fiber Channel/SAN, TIP/ix, OpenText (IXOS/LEA), SN Mass Storage like MAS, EMC, EVA, XPs, Network Node Manager and DataProtector etc. are included. The first versions of cfg2html were written for HP-UX. Meanwhile the cfg2html HP-UX stream was ported to all major *NIX platforms and small embedded systems.
Stars: ✭ 116 (-1.69%)
Mutual labels:  system-information
Periskop
Exception Monitoring Service
Stars: ✭ 115 (-2.54%)
Mutual labels:  monitoring
Applicationinsights Go
Microsoft Application Insights SDK for Go
Stars: ✭ 113 (-4.24%)
Mutual labels:  monitoring
Sakuli
Sakuli is an end-2-end testing and monitoring tool for web sites and common UIs with multiple monitoring integrations
Stars: ✭ 115 (-2.54%)
Mutual labels:  monitoring
Opc
OPC DA client in Golang for monitoring and analyzing process data based on Windows COM.
Stars: ✭ 113 (-4.24%)
Mutual labels:  monitoring
Droidcast
An experimental demo for capturing and displaying screenshot of an Android device without ROOT permission.
Stars: ✭ 116 (-1.69%)
Mutual labels:  screenshot
Zabbix
Real-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.
Stars: ✭ 1,914 (+1522.03%)
Mutual labels:  monitoring
Redelk
Red Team's SIEM - tool for Red Teams used for tracking and alarming about Blue Team activities as well as better usability in long term operations.
Stars: ✭ 1,692 (+1333.9%)
Mutual labels:  monitoring
Telegraf
The plugin-driven server agent for collecting & reporting metrics.
Stars: ✭ 10,925 (+9158.47%)
Mutual labels:  monitoring
Applicationinsights Python
Application Insights SDK for Python
Stars: ✭ 114 (-3.39%)
Mutual labels:  monitoring
Eye
Eyewitness.io package for Laravel 5 applications
Stars: ✭ 114 (-3.39%)
Mutual labels:  monitoring

Archey 4

Archey is a simple system information tool written in Python



Archey4

Why (again) a f*cking new Archey fork ?

The answer is here.

Note : Since the 21st September of 2017, you may notice that this repository no longer has the official status of fork.
Actually, the maintainer decided to separate it from the original one's "network" with the help of GitHub's staff.
Nevertheless, this piece of software is still a fork of djmelik's Archey project.

Features

  • Run as quickly as possible
  • Stay as light as possible
  • Keep entries ordered despite parallelism
  • Extensive local and public IP addresses detection
  • General temperature detection
  • JSON output
  • Screen capture ("best effort")

Which packages do I need to run this project ?

Required packages

  • python3 (>= 3.5)
  • python3-distro (python-distro on Arch Linux)
  • python3-netifaces (python-netifaces on Arch Linux)
  • procps (procps-ng on Arch Linux)

PyPy is supported and may replace CPython.

Looking for Python 3.4 support ? Please refer to the latest v4.9 release.

Highly recommended packages

Environments Packages Reasons Notes
All dnsutils (maybe bind-tools) WAN_IP would be detected faster Would provide dig
All lm-sensors (maybe lm_sensors) Temperature would be more accurate N/A
Graphical (desktop) pciutils GPU wouldn't be detected without it Would provide lspci
Graphical (desktop) wmctrl WindowManager would be more accurate N/A
Virtual w/o systemd virt-what and dmidecode Model would contain details about the hypervisor root privileges required

Installation

Install from package

First, grab a package for your distribution from the latest release here.
Now, it's time to use your favorite package manager. Some examples :

  • Arch-based distributions : pacman -U ./archey4-4.Y.Z-R-any.pkg.tar.zst
  • Debian-based distributions : apt install ./archey4_4.Y.Z-R_all.deb
  • RPM-based distributions : dnf install ./archey4-4.Y.Z-R.py??.noarch.rpm

Further information about packaging are available here.

Install from PyPI

sudo pip3 install archey4

Install from AUR

sudo yay -S archey4

Install from source

Step 1 : Fetch sources

# If you want the latest release :
LATEST_VERSION="v4.10.0"
wget "https://github.com/HorlogeSkynet/archey4/archive/${LATEST_VERSION}.tar.gz"
tar xvzf "${LATEST_VERSION}.tar.gz"
cd "archey4-${LATEST_VERSION}/"

# If you want the latest (stable) changes :
git clone https://github.com/HorlogeSkynet/archey4.git
cd archey4/

Step 2 : Installation

# If you have PIP installed on your system :
sudo pip3 install .

# But if you don't have PIP, no worries :
sudo python3 setup.py install

Step 3 (optional) : Configuration

# System-wide configuration file :
sudo mkdir /etc/archey4
sudo cp config.json /etc/archey4/config.json

# User-specific configuration file :
mkdir -p ~/.config/archey4
cp config.json ~/.config/archey4/config.json

Step 4 (optional) : Standalone building

Some years ago, Archey was a simple and unique Python file.
Project evolved, and now it's a proper module.
Some procedures below walk you through several ways of building Archey as a standalone program.

# Using PEX (recommended) :
sudo pip3 install pex
pex \
	-o dist/archey \
	-m archey \
	.

# Since v4.10 logos are dynamically imported for performance purposes.  
# This means that we have to explicitly make Stickytape and PyInstaller include them.  
# Please **replace** `debian` identifier below by yours (multiple flags allowed).

# Using Stickytape :
sudo pip3 install stickytape
stickytape \
	--copy-shebang \
	--add-python-path . \
	--output-file dist/archey \
	--add-python-module archey.logos.debian \
	archey/__main__.py
chmod +x dist/archey

# Using PyInstaller :
sudo pip3 install pyinstaller
pyinstaller \
	--distpath dist \
	--specpath dist \
	--name archey \
	--onefile archey/__main__.py \
	--hidden-import archey.logos.debian \
	--log-level WARN

Resulting program may now be installed system-wide.

# Execute program resulting from step 4.
./dist/archey

# You can now move this file for a system-wide install :
sudo mv dist/archey /usr/local/bin/

Usage

archey --help

or if you only want to try this out (for instance, from source) :

python3 -m archey --help

Configuration (optional)

Since v4.3.0, Archey 4 may be "tweaked" a bit with external configuration.
You can place a config.json file in these locations :

  1. /etc/archey4/config.json (system preferences)
  2. ~/.config/archey4/config.json (user preferences)
  3. ./config.json (local preferences)

If an option is defined in multiple places, it will be overridden according to the order above (local preferences > user preferences > system preferences).

Alternatively, you may specify your own configuration file with the -c command-line option.

The example file provided in this repository lists exhaustively the parameters you can set.
Below stand further descriptions for each available (default) option :

{
	// If set to `false`, configurations defined afterwards won't be loaded.
	// Developers running Archey from the original project may keep in there the original `config.json`,
	//   while having their own external configuration set elsewhere.
	"allow_overriding": true,
	// Set to `false` to disable multi-threaded loading of entries.
	"parallel_loading": true,
	// If set to `true`, any execution warning or error would be hidden.
	// Configuration parsing warnings **would** still be shown.
	"suppress_warnings": false,
	// Set this option to `false` to force Archey to use its own colors palettes.
	// `true` by default to honor os-release(5) `ANSI_COLOR` option.
	"honor_ansi_color": true,
	// Entries list.
	// Add a `disabled` option set to `true` to temporary hide one.
	// You may change entry displayed name by adding a `name` option.
	// You may re-order the entries list as you wish.
	"entries": [
		{ "type": "User" },
		{ "type": "Hostname" },
		{ "type": "Model" },
		{ "type": "Distro" },
		{
			"type": "Kernel",
			// Set to `true` to enable kernel release check against <www.kernel.org>.
			"check_version": false
		},
		{ "type": "Uptime" },
		{ "type": "Processes" },
		{ "type": "WindowManager" },
		{ "type": "DesktopEnvironment" },
		{ "type": "Shell" },
		{
			"type": "Terminal",
			// Leave this option set to `true` to display a beautiful colors palette.
			// Set it to `false` to allow compatibility with non-Unicode locales.
			"use_unicode": true
		},
		{ "type": "Packages" },
		{
			"type": "Temperature",
			// The character to display between the temperature value and the unit (as '°' in 53.2°C).
			"char_before_unit": " ",
			"sensors_chipsets": [
				// White-list of chipset identifiers (strings) passed to LM-SENSORS when computing the average temperature.
				// Use `sensors -A` to list the available chipsets on your system (e.g. `coretemp-isa-0000`, `acpitz-acpi-0`, ...).
				// Leaving empty (default) would make Archey process input data from all available chipsets.
				// Use this option if a sensor happens to return irrelevant values, or if you want to exclude it.
			],
			// Display temperature values in Fahrenheit instead of Celsius.
			"use_fahrenheit": false
		},
		{
			"type": "CPU",
			// Set to `true` to join all CPUs on the same line.
			"one_line": false,
			// Set to `false` to hide the number of cores.
			"show_cores": true,
			//
			// As explained above, you may rename entries as you wish.
			"name": "Processor"
		},
		{
			"type": "GPU",
			// Set to `true` to join all GPUs on the same line.
			"one_line": false,
			// The maximum number of GPUs you want to display.
			// `false` --> Unlimited.
			"max_count": 2
		},
		{
			"type": "RAM",
			// Some threshold values you can adjust affecting warning/danger colors.
			"warning_use_percent": 33.3,
			"danger_use_percent": 66.7
		},
		{
			"type": "LAN_IP",
			// The maximum number of local addresses you want to display.
			// `false` --> Unlimited.
			"max_count": 2,
			// Set to `true` if your local network does not honor RFC1918.
			"show_global": false,
			// Set to `false` to only display IPv4 LAN addresses.
			"ipv6_support": true
		},
		{
			"type": "Disk",
			// Which filesystems to show:
			// `["local"]` shows only local filesystems.
			// You can alternatively list specific filesystems as:
			//  * A list of device paths - e.g. `["/dev/sda1", "/dev/nvme0n1p1"]`
			//  * A list of mount points - e.g. `["/", "/mnt"]`
			//  * A combination of the above - e.g. `["/", "/dev/sda2"]`
			"show_filesystems": ["local"],
			// Set to `false` to write each filesystem on its own line.
			"combine_total": true,
			// Defines which labels to use for each disk (only works if `combine_total` is false!)
			// The options available are:
			//  * `"mount_points"`: Shows the mount point of the filesystem.
			//      e.g. `Disk (/): 10.0 GiB/100.0 GiB`
			//           `Disk (/mnt): 15.0 GiB / 200.0 GiB`
			//  * `"device_paths"`: Shows the device path of the filesystem.
			//      e.g. `Disk (/dev/sda1): 10.0 GiB / 100.0 GiB`
			//           `Disk (/dev/mmcblk0p1): 15.0 GiB / 200.0 GiB`
			//  * `false` or `null` (no quote marks!): Don't show any device labels.
			//      e.g. `Disk: 10.0 GiB / 100.0 GiB`
			//           `Disk: 15.0 GiB / 200.0 GiB`
			"disk_labels": null,
			// Set to `true` to hide the "Disk" entry name from the output.
			// i.e. null  --> `Disk (/):`
			//      false --> `Disk (/):`
			//      true  --> `(/):`
			"hide_entry_name": null,
			// Some threshold values you can adjust affecting warning/danger colors.
			"warning_use_percent": 50,
			"danger_use_percent": 75
		},
		{
			"type": "WAN_IP",
			//
			// As explained above, you may temporary hide entries as you wish.
			// See below example to hide your public IP addresses before posting your configuration on Internet.
			//"disabled": true,
			//
			// Below are settings relative to IPv4/IPv6 public addresses retrieval.
			// I hope options are self-explanatory.
			// You may set `dns_query` (or `http_url`) to `false` to disable them.
			// You may directly set `ipv4` or `ipv6` fields to `false` to completely disable them.
			//
			// <https://ident.me/> server sources : <https://github.com/pcarrier/identme>.
			"ipv4": {
				"dns_query": "myip.opendns.com",
				"dns_resolver": "resolver1.opendns.com",
				"dns_timeout": 1,
				"http_url": "https://v4.ident.me/",
				"http_timeout": 1
			},
			"ipv6": {
				"dns_query": "myip.opendns.com",
				"dns_resolver": "resolver1.opendns.com",
				"dns_timeout": 1,
				"http_url": "https://v6.ident.me/",
				"http_timeout": 1
			}
		}
	],
	"default_strings": {
		// Use this section to override default strings (internationalization).
	}
}

Test cases

An extensive tests suite is available.
Here is a short procedure to run them (you'll only need python3) :

git clone https://github.com/HorlogeSkynet/archey4.git
cd archey4/

# Run the suite from SetupTools.
python3 setup.py test

# Run the suite from the unit testing framework itself.
python3 -m unittest

Any improvement would be appreciated.

Notes to users

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].