Enable SSI on Apache2 under Ubuntu

Tested on:
– Ubuntu Linux 10.10 Maverick Meerkat (2010-11-21)
– Ubuntu Linux 7.10 Gutsy Gibbon
– Ubuntu Linux 6.06 Dapper Drake
– Ubuntu Linux 5.10 Breezy Badger

 

1)  Optional: Install the Apache2 httpd server if not already installed.

sudo apt-get install apache2

2) Create the following symlink.
sudo ln -s /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled

3) Open the /sites-available/default file and add the text with the yellow background.
sudo gedit /etc/apache2/sites-available/default

...
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews +Includes
AllowOverride None
Order allow,deny
allow from all
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</Directory>
...

4) Restart Apache2 and create a SSI test file (ssi-test.shtml) and save it in the directory /var/www/.

sudo apache2ctl restart

sudo vim /var/www/ssi.shtml

<html>
<head>
<title>SSI Page</title>

</head>
<body>
<!--#echo var="DATE_LOCAL" -->
</body>
</html>

5) Test SSI in your web browser.
http://localhost/ssi.shtml

If your browser displays the local date (eg Monday, 29-Jul-2013 14:32:58 BST), SSI would be working.

Yeah !!

nJoy 😉

 

Recording a session for a user when he / she logs in ssh

 

To start recording each session add this to the users .profile file

DATE=$(date +”%Y%m%d%H%M”)
mkdir /log/$DATE
script -t 2>/log/$DATE/bashlogs.timing -aqf /log/$DATE/bashlogs.script

 

to playback go to

/log/<timestamp>

and run

scriptreplay  bashlogs.timing bashlogs.script 3

where the 3 is the speed up factor.

nJoy;

 

Change Hostname Permanently on Debian or Ubuntu

Debian based systems use the file /etc/hostname to read the hostname of the computer at boot time and set it up using the init script /etc/init.d/hostname.sh

We can edit the file /etc/hostname and change the hostname and then run:

/etc/init.d/hostname.sh start

Steps:

1. sudo vim /etc/hostname
2. Save the file with the hostname you like to set
3. sudo /etc/init.d/hostname.sh start

Ref: http://sysblogd.com/50/change-hostname-permanently-on-debian-or-ubuntu.htm

 

nJoy 😉

Querying network card information and status

Great tool for checking ethernet NIC information in linux:

ethtool

In ubuntu you might need to install it like so :

sudo apt-get install ethtool

The tool is easy to use:

 

Use

ifconfig -a 

to list nics

then

 

root@wo1:~# ethtool p4p1
Settings for p4p1:
Supported ports: [ TP ]
           Supported link modes: 10baseT/Half 10baseT/Full
                                            100baseT/Half 100baseT/Full
                                            1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes:            10baseT/Half 10baseT/Full
                                            100baseT/Half 100baseT/Full
                                            1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000007 (7)
                                    drv probe link
Link detected: yes
root@wo1:~#

 

nJoy 😉

Convert DEB to RPM or RPM to DEB Package

You can convert DEB file to RPM package and RPM to DEB package using alien command, if you have a *.rpm file that you want to install on a Debian or Ubuntu.

Convert RPM to DEB

Install alien command on Ubuntu as mentioned here:

# sudo apt-get install alien

Now, use alien command to convert rpm to deb file,

# alien clamav-0.92.1-1.el5.rf.i386.rpm

clamav-0.92.1-1.el5.rf.i386.deb generated

Finally, Install deb packages using the dpkg command,

# dpkg -i clamav-0.92.1-1.el5.rf.i386.deb

Where,
-i = install a package

Convert DEB to RPM

Use alient -r option to convert a deb file to rpm file.

# alien -r clamav-0.92.1-1.el5.rf.i386.deb

clamav-0.92.1-1.el5.rf.i386.rpm generated

Once you generate the rpm file, you can install it on Red Hat, Fedora or CentOS.
Finally install rpm,

# rpm -ivh clamav-0.92.1-1.el5.rf.i386.rpm

Where,
-i = Install RPM
-v = Install in verbose Mode
-h = Print  50  hash  marks  as the package archive is unpacked

nJoy 😉

 

One Liner Email from bash

Simple:

echo “This will go into the body of the mail.” | mail -s “Hello world” you@youremailid.com

nJoy 😉

 

How to Auto-Unlock Keyring in Ubuntu 12.04, 12.10

One of the benefits of using Ubuntu OS is it comes with build-in security/safety/privacy feature. One of this feature is a keyring manager application that stores and manage your password for your credentials. This feature is really useful to keep your credentials safe and no one can unlock them, except you of course, even if your Ubuntu-powered machine (laptop, netbook, etc) got stolen.
(more…)

Screen script for multi-user session or reminding you to create a screen on logon

A common problem when many people share large systems as the same user ( I know .. I know but anyways move on )  is that when you logon you might want to take over where someone else left off. Also sometimes you want to share a session with someone for supervision or just team experience.

Screen tool in linux is fantastic for this. I wrote this script to allow people to be reminded to have a screen session and if already there allow you to log on to the screen by either taking over the session or sharing it with the other user.

installation of screen is as easy as :

 

sudo yum install screen -y

or for you debbie penguins out there

 

sudo apt-get install screen -y

 

The script goes like this :

## Screen profile for user session sharing
## by David Saliba (copyleft) 2013 

#!/bin/bash

function greet {
 clear
 cat /etc/motd
 echo "Hostname:" `hostname `
 echo
 ifconfig | grep inet | egrep -v "inet6|localhost|127\.0\.0\.1"
 echo
 #  df -h /
 echo "Welcome ! #  No screen session  #"   
}

function newscreen {

 echo "Would you like to create a new session  ? (Y/n)"

  read -t 10 b
  if [[ $b == "N" || $b == "n" ]]; then
 { # Dummy if no just continue
  echo 
 }
 else
 {
  
  echo " Remember to use <CTRL> + A and then d to leave the screen session active or just disconnect "
  echo -n "Creating "
         sleep 1; echo -n "." ;sleep 1; echo -n "."; sleep 1; echo -n "."
  exec screen -S Workarea
 }
 fi
}

if [ -z "$STY" ]; then
 firstscreen=$(screen -list | grep "(" | cut -f 2 | head -n 1)
# echo $firstscreen

 if [ ! -z "$firstscreen" ]; then
 {
         echo "Found screen ($firstscreen).Do you want to jump on it (Y), or share the session (X)? (Default Y in 10s)"
         read -t 10 a
     if [[ $a == "N" || $a == "n" ]]; then
        {
         greet
        }
     elif [[ $a == "X" || $a == "x" ]]; then
        {
         echo -n "Joining "
         sleep 1; echo -n "." ;sleep 1; echo -n ".";
         exec screen -x $firstscreen
        }
     else
        {
         echo -n "Connecting and taking over"
         sleep 1; echo -n "." ;sleep 1; echo -n ".";
         exec screen -r -d $firstscreen
        }
     fi
 }
 else
 {
   greet   str3amuK
   newscreen
 }
 fi
fi

 

Save this script under /etc/profile.d/screen.sh or some other name you will recognize.

 

Bash While Loop Example

How do I use bash while loop to repeat certain task under Linux / UNIX operating system? How do I set infinite loops using while statement? The bash while loop is a control flow statement that allows code or commands to be executed repeatedly based on a given condition. For example, run echo command 5 times or read text file line by line or evaluate the options passed on the command line for a script.

bash while loop syntax

The syntax is as follows:

while [ condition ]
do
   command1
   command2
   command3
done

command1 to command3 will be executed repeatedly till condition is true. The argument for a while loop can be any boolean expression. Infinite loops occur when the conditional never evaluates to false. For example following while loop will print welcome 5 times on screen:

#!/bin/bash
x=1
while [ $x -le 5 ]
do
  echo "Welcome $x times"
  x=$(( $x + 1 ))
done

Here is a sample shell code to calculate factorial using while loop:

#!/bin/bash
counter=$1
factorial=1
while [ $counter -gt 0 ]
do
   factorial=$(( $factorial * $counter ))
   counter=$(( $counter - 1 ))
done
echo $factorial

To run just type: $ chmod +x script.sh $ ./script.sh 5 Output:

120

While loops are frequently used for reading data line by line from file:

#!/bin/bash
FILE=$1
# read $FILE using the file descriptors
exec 3<&0
exec 0<$FILE
while read line
do
	# use $line variable to process line
	echo $line
done
exec 0<&3

You can easily evaluate the options passed on the command line for a script using while loop:

......
..
while getopts ae:f:hd:s:qx: option
do
        case "${option}"
        in
                a) ALARM="TRUE";;
                e) ADMIN=${OPTARG};;
                d) DOMAIN=${OPTARG};;
                f) SERVERFILE=$OPTARG;;
                s) WHOIS_SERVER=$OPTARG;;
                q) QUIET="TRUE";;
                x) WARNDAYS=$OPTARG;;
                \?) usage
                    exit 1;;
        esac
done
.......
..

How do I use while as infinite loops?

Infinite for while can be created with empty expressions, such as:

#!/bin/bash
while :
do
	echo "infinite loops [ hit CTRL+C to stop]"
done

Conditional while loop exit with break statement

You can do early exit with the break statement inside the whil loop. You can exit from within a WHILE using break. General break statement inside the while loop is as follows:

while [ condition ]
do
   statements1      #Executed as long as condition is true and/or, up to a disaster-condition if any.
   statements2
  if (disaster-condition)
  then
	break       	   #Abandon the while lopp.
  fi
  statements3          #While good and, no disaster-condition.
done

In this example, the break statement will skip the while loop when user enters -1, otherwise it will keep adding two numbers:

#!/bin/bash

while :
do
	read -p "Enter two numnbers ( - 1 to quit ) : " a b
	if [ $a -eq -1 ]
	then
		break
	fi
	ans=$(( a + b ))
	echo $ans
done

Early continuation with the continue statement

To resume the next iteration of the enclosing WHILE loop use the continue statement as follows:

while [ condition ]
do
  statements1      #Executed as long as condition is true and/or, up to a disaster-condition if any.
  statements2
  if (condition)
  then
	continue   #Go to next iteration of I in the loop and skip statements3
  fi
  statements3
done