Linux uptime
Aug 24, 2011 PHP Coding, Web Development
If you want to show the uptime of your linux server on your website, you can do so very easily.
function linuxUptime() { $ut = strtok( exec( "cat /proc/uptime" ), "." ); $days = sprintf( "%2d", ($ut/(3600*24)) ); $hours = sprintf( "%2d", ( ($ut % (3600*24)) / 3600) ); $min = sprintf( "%2d", ($ut % (3600*24) % 3600)/60 ); $sec = sprintf( "%2d", ($ut % (3600*24) % 3600)%60 ); return array( $days, $hours, $min, $sec ); } $ut = linuxUptime(); // If you would like to show the seconds as well just add [ , $ut[3] seconds ] after minutes. echo "Time since last reboot: $ut[0] days, $ut[1] hours, $ut[2] minutes";
Just call the $ut = linuxUptime() function and then you can use the variables to show the time.
**NOTE: Your server must allow you to run the exec() PHP command. Some hosts disable the execution of this and several other PHP functions.
Now if you were wanting to gather the uptime of multiple servers all at the same time this can be accomplished with CURL. What we would end up doing is using the above code and place it in a PHP file on each of the target servers. In the example below you will see I am referencing a file called linuxUptime.php which holds the code listed above. We could then use a MySQL database or just an array full of domain names that we would loop through to gather the stats. Below I am posting a simple script which uses an array as an example. (This file does not currently exist on my site to show uptime of my site)
$sites = array('danielkassner.com'); // Create a list of sites to check foreach($sites as $site) { // Loop through each site and get uptime $ch = curl_init(); // Initiate curl session curl_setopt($ch, CURLOPT_URL, 'http://'.$site.'/linuxUptime.php'); // Set the URL of the uptime script curl_setopt($ch, CURLOPT_HEADER, 0); // Disable header output curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // Return data as a string instead of output directly $data=curl_exec($ch); // Execute curl commands curl_close ($ch); // Close the curl session echo $site.': '.$data.'<br />'; // Output value returned from the linuxUptime.php file } // End server loop
When we gather stats like this we could easily store the uptime values in a database table so that we could track the history.
Enjoy!
Get user operating system with PHP
Jun 11, 2010 PHP Coding
Ever wanted to find out what operating system your visitors are using? The following function will allow you to get the user operating system so you can use in a statistics application or show certain content on your website. This will allow server side decisions on what stylesheets to show or any other operating system specific content to be shown/hide.
/* Author: Daniel Kassner Website: http://www.danielkassner.com */ function getOS($userAgent) { // Create list of operating systems with operating system name as array key $oses = array ( 'iPhone' => '(iPhone)', 'Windows 3.11' => 'Win16', 'Windows 95' => '(Windows 95)|(Win95)|(Windows_95)', // Use regular expressions as value to identify operating system 'Windows 98' => '(Windows 98)|(Win98)', 'Windows 2000' => '(Windows NT 5.0)|(Windows 2000)', 'Windows XP' => '(Windows NT 5.1)|(Windows XP)', 'Windows 2003' => '(Windows NT 5.2)', 'Windows Vista' => '(Windows NT 6.0)|(Windows Vista)', 'Windows 7' => '(Windows NT 6.1)|(Windows 7)', 'Windows NT 4.0' => '(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)', 'Windows ME' => 'Windows ME', 'Open BSD'=>'OpenBSD', 'Sun OS'=>'SunOS', 'Linux'=>'(Linux)|(X11)', 'Safari' => '(Safari)', 'Macintosh'=>'(Mac_PowerPC)|(Macintosh)', 'QNX'=>'QNX', 'BeOS'=>'BeOS', 'OS/2'=>'OS/2', 'Search Bot'=>'(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp/cat)|(msnbot)|(ia_archiver)' ); foreach($oses as $os=>$pattern){ // Loop through $oses array // Use regular expressions to check operating system type if(eregi($pattern, $userAgent)) { // Check if a value in $oses array matches current user agent. return $os; // Operating system was matched so return $oses key } } return 'Unknown'; // Cannot find operating system so return Unknown }
An example of how this would be used:
echo getOS($_SERVER['HTTP_USER_AGENT']);
This script can be used with the Get Browser Type, which also has the same structure as this script.
3ware 9650SE-4LPML RAID array Degraded
Nov 20, 2009 Server Virtualization, Technology
This week I have started to look into converting my home Ubuntu Hardy (8.04) x64 VMware Server 1.0.5 server to ESXi. The main reason behind this is that my work runs ESX 3.5 and I am trying to learn a bit more items related to ESX. Before I fully wiped all of my system I wanted to make sure that ESXi would run on my hardware, so I removed my 9650 card as well as the SATA connection to my main boot drive. This way I could revert back to my old system without loosing anything if ESXi would not run. The motherboard I have in the system is a MSI K9A2 Platinum AM2+/AM2 AMD 790FX ATX board which can boot from USB. I have picked up an 8GB USB flash drive to run ESXi on instead of a hard drive. After a lot of tweaking ESXi was running smooth on my system without my RAID drives and it was time to boot back into my original system to get some files and configurations off. During the system boot I was notified that the RAID array has been degraded and that there was a problem. Below I will show you the trouble shooting steps I used to get the RAID array back online and rebuilt. Read the rest of this entry »
