Sunday, December 25, 2011

Create ISO files and mount ISO files a folder.

In Linux (Ubuntu) it is possible to convert a contents of a folder into an "iso" file just using the command given below.

mkisofs -o /home/linuxlookup/example.iso /source/directory/

Similarly, you can mount an "iso" image as a folder using the coomand below.

# mount -o loop disk1.iso /mnt/

Similarly, to mount an "iso" as a drive use the below command,

sudo mount /home/vijays/redhat_4.8.iso /mnt/ -t iso9660 -o loop

Monday, November 28, 2011

How to compile a kernel from kernel.org in Ubuntu 10.04 LTS.

This quick how-to is based on http://linuxtweaking.blogspot.com/2010/05/how-to-compile-kernel-on-ubuntu-1004.html

Open a terminal and work through the following set of commands.

Install these packages

sudo apt-get install fakeroot kernel-wedge build-essential makedumpfile kernel-package libncurses5 libncurses5-dev

Run this

sudo apt-get build-dep --no-install-recommends linux-image-$(uname -r)

Create your source directory

mkdir ~/src
cd ~/src

Download and extract your kernel


You can browse for kernels at http://www.kernel.org/pub/linux/kernel/v2.6/ This guide is using kernel 2.6.37.

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.37.tar.gz
tar xvf linux-2.6.37.tar.gz
cd linux-2.6.37

Configure your Kernel

make menuconfig

Build your Kernel

export CONCURRENCY_LEVEL=3
make-kpkg clean
time fakeroot make-kpkg --initrd kernel-image kernel-headers

General rule, concurrency level = number of processor cores + 1


Install your kernel

cd ~/src

dir        
sudo dpkg -i linux-image-2.6.37_2.6.37-10.00.Custom_amd64.deb
sudo dpkg -i linux-headers-2.6.37_2.6.37-10.00.Custom_amd64.deb

Create the initramfs image

sudo update-initramfs -c -k 2.6.37

Update your grub.cfg

sudo update-grub

Reboot your system


Enjoy your new kernel.

Enable Blocked Wifi connecetion under Ubuntu.

There are cases where you see "Wireless Disabled" under network manager menu. You can not detect / configure the network even if you try hard.
I found a solution, on internet, to fix it.

Steps:

1. Go to terminal and type  "rfkill list all" to list the status.
2. Then type " rfkill unblock wifi" to unblock the device.
3. Reboot / Restart your system.

You will see that  Wifi gets detected.



Wednesday, November 16, 2011

Manual Installation of Perl Modules

Most of the commonly used Perl modules can be downloaded from the CPAN website. The installation steps are straightforward.
1. Browse the CPAN website, identify the module package you need and then download it using a utility such as wget.
[root@bigboy tmp]# wget http://www.cpan.org/authors/id/M/MA/MARKOV/MailTools-1.74.tar.gz
--15:07:36--  http://www.cpan.org/authors/id/M/MA/MARKOV/MailTools-1.74.tar.gz
           => `MailTools-1.74.tar.gz'
Resolving www.cpan.org... 66.39.76.93
Connecting to www.cpan.org|66.39.76.93|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 47,783 (47K) [application/x-tar]

100%[===================================>] 47,783       100.88K/s             

15:07:38 (100.51 KB/s) - `MailTools-1.74.tar.gz' saved [47783/47783]

[root@bigboy tmp]#
2. Extract the file from the package with the tar command.
[root@bigboy tmp]# tar -xzvf MailTools-1.74.tar.gz 
MailTools-1.74/
MailTools-1.74/t/
...
...
...
MailTools-1.74/ChangeLog
MailTools-1.74/MANIFEST
[root@bigboy tmp]#
3. Enter the newly created directory with the same name as the TAR file, and install the module with the following commands.
  • perl Makefile.PL
  • make
  • make test
[root@bigboy tmp]# cd MailTools-1.74
[root@bigboy MailTools-1.74]# perl Makefile.PL
Checking for Net::SMTP...ok
Checking for Net::Domain...ok
Checking for IO::Handle...ok
Checking if your kit is complete...
Looks good
Writing Makefile for Mail
[root@bigboy MailTools-1.74]# make
cp Mail/Cap.pm blib/lib/Mail/Cap.pm
cp Mail/Mailer/rfc822.pm blib/lib/Mail/Mailer/rfc822.pm
...
...
...
Manifying blib/man3/Mail::Util.3pm
Manifying blib/man3/Mail::Address.3pm
[root@bigboy MailTools-1.74]# make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/extract.....ok                                                             
...
...
...
All tests successful.
Files=7, Tests=95,  2 wallclock secs ( 1.28 cusr +  0.29 csys =  1.57 CPU)
[root@bigboy MailTools-1.74]# 
Your Perl module installation should now be complete.
Note: The output of the perl Makefile.PL command will tell you whether there are any other required modules. You can either install them all manually, running the risk of having to install more prerequisite modules for these prerequisite modules, or you can use automated updates which will be covered next.

Sunday, October 23, 2011

FTP Server setup on Ubuntu.

          VSFTPD is a FTP deamon available in Ubuntu and it is easy to install, setup and maintain.

Steps :

1. Install vsftpd from Ubuntu repositories by typing the following command in a terminal Window.
sudo apt-get install vsftpd

2. During installation, user ftp will get generated with default ftp directory as "/home/ftp". If you like to change the same to another directory, then type,

"sudo usermod -d /srv/ftp ftp" 

where /srv/ftp is the new ftp directory and ftp stands for username.

3.You can restart the ftp server by typing the following command,

"/etc/init.d/vsftpd restart".

Configuration :

The default configuration file for vsftpd is /etc/vsftpd.conf. We can configure the vsftod ftp server by editing this file, as per our requirement.

1. To enable local users to login and upload files, edit the vsftpd.conf file as,
local_enable=YES
write_enable=YES
 2. To enable anonymous user to upload files, use
anon_upload_enable=YES 
3. To restrict users only to their home directory, use
chroot_local_user=YES
To include a list of users to be able to access their home directories, use
chroot_list_file=/etc/vsftpd.chroot_list
where vsftpd.chroot_list is a file includes list of users (one per line).

4. Restart vsftpd, /etc/init.d/vsftpd restart

Access :

Using a browser type "ftp://ip_address_of_server/". This will prompt for username and Password. On successful login, you can view files that are related to your user account.

Note : 
1. You can also view files remotely, under file-browser, like nautilus, etc.
2. The FTP server is not encrypted and is unsafe to use unless made secured by using  SSL (secure socket layer).



Friday, October 7, 2011

Installation of Spreadsheet::WriteExcel module for Perl

    Spreadsheet::WriteExcel module can be used to write/edit excel files. The installation procedure for this module is as given below.

1. Download http://perlmirror.indialinks.com/authors/id/J/JM/JMCNAMARA/Spreadsheet-WriteExcel-2.37.tar.gz.

2. Unzip the module as follows, tar -zxvf Spreadsheet-WriteExcel-2.xx.tar.gz.
3. The module can be installed using the standard Perl procedure:
          perl Makefile.PL
        make
        make test
        make install
    # You may need to be root
         make clean      # or make realclean

That's all !!!!!. Now you can write Perl programs to edit an Excel.

Sample program :

    #!/usr/bin/perl -w
    
    use strict;
    use Spreadsheet::WriteExcel;
    
    # Create a new Excel workbook
    my $workbook = Spreadsheet::WriteExcel->new("regions.xls");
    
    # Add some worksheets
    my $north = $workbook->addworksheet("North");
    my $south = $workbook->addworksheet("South");
    my $east  = $workbook->addworksheet("East");
    my $west  = $workbook->addworksheet("West");
    
    # Add a caption to each worksheet
    foreach my $worksheet (@{$workbook->{worksheets}}) {
       $worksheet->write(0, 0, "Sales");
    }

        # Write some data
    $north->write(0, 1, 200000);
    $south->write(0, 1, 100000);
    $east->write (0, 1, 150000);
    $west->write (0, 1, 100000);
    
    # Set the active worksheet
    $south->activate();

Tuesday, October 4, 2011

Parse EXCEL tools under Perl.

This is a sample Perl Program to parse/read excel.

#!/usr/bin/perl -w

use strict;
use Spreadsheet::ParseExcel;

my $oExcel = new Spreadsheet::ParseExcel;

die "You must provide a filename to $0 to be parsed as an Excel file" unless @ARGV;

my $oBook = $oExcel->Parse($ARGV[0]);
my($iR, $iC, $oWkS, $oWkC);
print "FILE  :", $oBook->{File} , "\n";
print "COUNT :", $oBook->{SheetCount} , "\n";

print "AUTHOR:", $oBook->{Author} , "\n"
 if defined $oBook->{Author};

for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++)
{
 $oWkS = $oBook->{Worksheet}[$iSheet];
 print "--------- SHEET:", $oWkS->{Name}, "\n";
 for(my $iR = $oWkS->{MinRow} ;
     defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ;
     $iR++)
 {
  for(my $iC = $oWkS->{MinCol} ;
      defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ;
      $iC++)
  {
   $oWkC = $oWkS->{Cells}[$iR][$iC];
   print "( $iR , $iC ) =>", $oWkC->Value, "\n" if($oWkC);
  }
 }
}

Usage : Type "Path_to_perlfile Excel_filename_that_need_to_be_parsed.xls", in terminal window to read and display contents of an excel file.


Before that you need to ensure that the supporting modules are installed already. Under Ubuntu, the modules can be installed using command "sudo apt-get install libspreadsheet-parseexcel-perl" OR you can download the sources and copy the same to standard location of perl.

Saturday, February 19, 2011

Execute system commands using PHP under Root Priviledges.


Suppose you have set-up a webserver (apache2) with PHP enabled and you need to execute some system commands or your own scripts under super user / root priviledges, then the following method may help you to solve the problem, especially under Ubuntu.

Step 1:  Run sudo visudo in a Terminal window.

Step 2:  Add the below lines at the end of the file, depending on your requirement.
 
www-data ALL=NOPASSWD: /sbin/iptables, /usr/bin/du
OR
www-data ALL=NOPASSWD: ALL

Step 3:  Try an exec command under PHP script to test the settings.

e.g : exec ("sudo iptables -P FORWARD ACCEPT");