Linfo is a free and open source, cross-platform server statistics UI/library which displays a great deal of system information. It is extensible, easy-to-use (via composer) PHP5 library to get extensive system statistics programmatically from your PHP application. It’s a Ncurses CLI view of Web UI, which works in Linux, Windows, *BSD, Darwin/Mac OSX, Solaris, and Minix.
It displays system info including CPU type/speed; architecture, mount point usage, hard/optical/flash drives, hardware devices, network devices and stats, uptime/date booted, hostname, memory usage (RAM and swap, if possible), temperatures/voltages/fan speeds and RAID arrays.
Requirements:
- PHP 5.3
- pcre extension
- Linux – /proc and /sys mounted and readable by PHP and Tested with the 2.6.x/3.x kernels
How to Install Linfo Server Stats UI/library in Linux
First, create a Linfo directory in your Apache or Nginx web root directory, then clone and move repository files into /var/www/html/linfo
using the rsync command as shown below:
$ sudo mkdir -p /var/www/html/linfo $ git clone git://github.com/jrgp/linfo.git $ sudo rsync -av linfo/ /var/www/html/linfo/
Then rename sample.config.inc.php to config.inc.php. This is the Linfo config file, you can define your own values in it:
$ sudo mv sample.config.inc.php config.inc.php
Now open the URL http://SERVER_IP/linfo
in web browser to see the Web UI as shown in the screenshots below.
This screenshot shows the Linfo Web UI displaying core system info, hardware components, RAM stats, network devices, drives and file system mount points.
You can add the line below in the config file config.inc.php
to yield useful error messages for troubleshooting purposes:
$settings['show_errors'] = true;
Running Linfo in Ncurses Mode
Linfo has a simple ncurses-based interface, which rely on php’s ncurses extension.
# yum install php-pecl-ncurses [On CentOS/RHEL] # dnf install php-pecl-ncurses [On Fedora] $ sudo apt-get install php5-dev libncurses5-dev [On Debian/Ubuntu]
Now compile the php extension as follows
$ wget http://pecl.php.net/get/ncurses-1.0.2.tgz $ tar xzvf ncurses-1.0.2.tgz $ cd ncurses-1.0.2 $ phpize # generate configure script $ ./configure $ make $ sudo make install
Next, if you successfully compiled and installed the php extension, run the commands below.
$ sudo echo extension=ncurses.so > /etc/php5/cli/conf.d/ncurses.ini
Verify the ncurses.
$ php -m | grep ncurses
Now run the Linfo.
$ cd /var/www/html/linfo/ $ ./linfo-curses
The following features yet to be added in Linfo:
- Support for more Unix operating systems (such as Hurd, IRIX, AIX, HP UX, etc)
- Support for less known operating systems: Haiku/BeOS
- Extra superfluous features/extensions
- Support for htop-like features in ncurses mode
For more information, visit Linfo Github repository: https://github.com/jrgp/linfo
That’s all! From now on, you can view a Linux system’s information from within a web browser using Linfo. Try it out and share with us your thoughts in the comments. Additionally, have you come across any similar useful tools/libraries? If yes, then give us some info about them as well.
Hi, I did not want “anything” to download files from linfo so I added a
.htaccess
file in the linfo directory:Hi Aaron Kili,
UI linfo is working great but when i tired “Running Linfo in Ncurses Mode” but not able to run even through successful compilation on Ubuntu 14.04 32bit this command give me permission error.
“sudo echo extension=ncurses.so > /etc/php5/cli/conf.d/ncurses.ini” ——> bash: /etc/php5/cli/conf.d/ncurses.ini: Permission denied
also ncurses.ini file is not present after compilation.
Can you please help !!!
@Rahul
Try to post an issue about this on the Linfo Github repository to get more clarification.
Hi Thanks Aaron Kili,
Can we run the configure from single system and get the report of multiple Linux server in the environment. And get the email report at specific time interval.
@Imtiyaz
Linfo works on a single system, to offer the functionality you have described you’ll need to modify it a little. But try to find more from the developer at: https://github.com/jrgp/linfo
Can we installed on siem server
@Imtiyaz
Yes, you can install on SIEM server.
Thank you for your article.
Unfortunately, after running http://SERVER_IP/linfo command I can see only the list of files in Linfo catalog:
Wha should I do else to have this site running correctly? I can’t see here an index.html file. Is it normally?
Centos 7.3 Minimal on VmWare Workstation 12
Thank you!
@Alexey
Welcome, there is an index.php file, this is the default index file. Make sure that your web server serves .php index files. For Apache, open the httpd.conf set it using the DirectoryIndex directive(list them in order of preference) as follows:
DirectoryIndex index.php index.phtml index.html index.htm
There was just one option in DirectoryIndex – index.html
I added index.php index.phtml index.html index.htm and after that restartng httpd service.
After trying to open the site the other error occured:
scan();
if (isset($_SERVER[‘LINFO_NCURSES’]) && php_sapi_name() == ‘cli’) {
$output = new \Linfo\Output\Ncurses($linfo);
}
else {
switch (array_key_exists(‘out’, $_GET) ? strtolower($_GET[‘out’]) : ‘html’) {
default:
case ‘html’:
$output = new \Linfo\Output\Html($linfo);
break;
case ‘json’:
case ‘jsonp’: // To use JSON-P, pass the GET arg – callback=function_name
$output = new \Linfo\Output\Json($linfo, array_key_exists(‘callback’, $_GET) ? $_GET[‘callback’] : null);
break;
case ‘php_array’:
$output = new \Linfo\Output\Serialized($linfo);
break;
case ‘xml’:
$output = new \Linfo\Output\Xml($linfo);
break;
}
}
$output->output();
} catch (FatalException $e) {
echo $e->getMessage().”\n”;
exit(1);
}
What’s wrong here?
Thank you!
Might be since I have installed Centos Minimal version no PHP was included during installation.
So, I have just installed PHP 7.1.5, restart httpd service and it works now!
Thank you for your help!
@Alexey
This is great, good to know that you fixed the error. This will definitely help us in future when offering solutions to other readers’ issues/errors.
Many thanks for the feedback.
Thanks for your great tips. I want to know can these tools show the health of HDD and the temperature?
Cheers
@jamshid
Welcome, you can use hddtemp for this, but you need to find a way of using the output from Linfo web UI.
To install hddtemp, type:
sudo apt install hddtemp
Thank you Aaron Kili :)
@Jamshid
Welcome, many thanks for the useful feedback, and always following us.
Hi thanks for the useful tips, can it show the health and temperature of HDD?
Jamshid