Archive for the ‘Ensim’ Category

How to Send Email from a PHP Script

Saturday, January 12th, 2008

Using php mail() function to send emails from php script.

Send Email from a PHP Script Example :

The first argument to this function is the recipient, the second specifies the message’s subject and the third one should contain the body. So to send a simple sample message, we could use:

$to = "recipient@example.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
echo("

Message successfully sent!

“);
} else {
echo(”

Message delivery failed…

“);
}
?>

Save this file as mail.php and browse from url http://yourdomain/mail.php

what ports are listening on my server?

Sunday, July 29th, 2007

You can use this commands –

lsof -i

Or

netstat –listen

MySQL Quota Check Tool

Saturday, May 26th, 2007

I came across wonderfull mysql quota check tool — Here is how it works -

The MySQL Quota-Tool helps you to set a size limit on MySQL databases.

It works by checking the size of each database and revoking the INSERT- and REATE-priveleges for the databases, which exceed the given size limit.

When the size of the database falls below the given limit, the INSERT- and CREATE-priveleges are granted again.

This (of course) doesn’t work for users who have global priveleges, because the quota is database and not user based, but in most environments privileges are given in the “db”-table which is modified by the MySQL Quota Tool.

#!/usr/bin/php -q

/*
* MySQL quota script
* written by Sebastian Marsching
*
*/

/*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

/*
* Create table for quota data with the following statement:
*
* CREATE TABLE `Quota` (`Db` CHAR(64) NOT NULL,
* `Limit` BIGINT NOT NULL,
* `Exceeded` ENUM('Y','N') DEFAULT 'N' NOT NULL,
* PRIMARY KEY (`Db`), UNIQUE (`Db`));
*
* The field 'db' stores the information for which database
* you want to limit the size.
* The field 'limit' is the size limit in bytes.
* The field 'exceeded' is only used internally and must be
* initialized with 'N'.
*/

/*
* Settings
*/

$mysql_host = 'localhost';
$mysql_user = 'root'; // Do NOT change, root-access is required
$mysql_pass = '';
$mysql_db = 'quotadb'; // Not the DB to check, but the db with the quota table
$mysql_table = 'quota';

/*
* Do NOT change anything below
*/

$debug = 0;

// Connect to MySQL Server

if (!mysql_connect($mysql_host, $mysql_user, $mysql_pass))
{
echo "Connection to MySQL-server failed!";
exit;
}

// Select database

if (!mysql_select_db($mysql_db))
{
echo "Selection of database $mysql_db failed!";
exit;
}

// Check quota for each entry in quota table

$sql = "SELECT * FROM $mysql_table;";
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result))
{
$quota_db = $row['db'];
$quota_limit = $row['limit'];
$quota_exceeded = ($row['exceeded']=='Y') ? 1 : 0;

if ($debug)
echo "Checking quota for '$quota_db'...\n";

$qsql = "SHOW TABLE STATUS FROM $quota_db;";
$qresult = mysql_query($qsql);

if ($debug)
echo "SQL-query is \"$qsql\"\n";

$quota_size = 0;

while ($qrow = mysql_fetch_array($qresult))
{
if ($debug)
{ echo "Result of query:\n"; var_dump($qrow); }
$quota_size += $qrow['Data_length'] + $qrow['Index_length'];
}

if ($debug)
echo "Size is $quota_size bytes, limit is $quota_limit bytes\n";

if ($debug && $quota_exceeded)
echo "Quota is marked as exceeded.\n";
if ($debug && !$quota_exceeded)
echo "Quota is not marked as exceeded.\n";

if (($quota_size > $quota_limit) && !$quota_exceeded)
{
if ($debug)
echo "Locking database...\n";
// Save in quota table
$usql = "UPDATE $mysql_table SET exceeded='Y' WHERE db='$quota_db';";
mysql_query($usql);
if ($debug)
echo "Querying: $usql\n";
// Dismiss CREATE and INSERT privilege for database
mysql_select_db('mysql');
$usql = "UPDATE db SET Insert_priv='N', Create_priv='N' WHERE Db='$quota_db';";
mysql_query($usql);
if ($debug)
echo "Querying: $usql\n";
mysql_select_db($mysql_db);
}

if (($quota_size <= $quota_limit) && $quota_exceeded)
{
if ($debug)
echo "Unlocking database...\n";
// Save in quota table
$usql = "UPDATE $mysql_table SET exceeded='N' WHERE db='$quota_db';";
mysql_query($usql);
if ($debug)
echo "Querying: $usql\n";
// Grant CREATE and INSERT privilege for database
mysql_select_db('mysql');
$usql = "UPDATE db SET Insert_priv='Y', Create_priv='Y' WHERE Db='$quota_db';";
mysql_query($usql);
if ($debug)
echo "Querying: $usql\n";
mysql_select_db($mysql_db);
}
}

?>

—-

More details can be found at – http://projects.marsching.org/mysql_quota/

I am going to install this tool and see how it works for me :)

Thanks,
Preeti S.
ThinkSupport.net

Here is how to turn off safe_mode in php for 1 domain — Ensim Server

Friday, May 25th, 2007

Here is how to turn off safe_mode in php for 1 domain

pico /etc/httpd/conf/siteXX/safemode

where ’siteXX’ is the domain’s site number.

“sitelookup -d domain.com” to get site number

in that file type this line:

php_admin_flag safe_mode off

now restart apache

Thanks

Basic Linux commands.

Friday, May 18th, 2007

I often forget commands ;) I decided to post them at one place (cheers to websites from which I copied the details ) – now I don’t have to google everytime — I am sorry google you missed few of my hits :D

ls

List files/directories in a directory, comparable to dir in windows/dos.

ls -la

Shows all files (including ones that start with a period), directories, and details attributes for each file.

cd

Change directory (e.g cd /usr/local/bin)

cd ~

Go to your home directory

cd -

Go to the last directory you were in

cd ..

Go up a directory

cat

Print file contents to the screen

cat filename.txt

Print the contents of filename.txt to your screen

tail

Similar to cat, but only reads the end of the file

tail /var/log/messages

See the last 20 (by default) lines of /var/log/messages

tail -f /var/log/messages

Watch the file continuously, while it’s being updated

tail -200 /var/log/messages

Print the last 200 lines of the file to the screen

head

Similar to tail, but only reads the top of the file

head /var/log/messages

See the first 20 (by default) lines of /var/log/messages

head -200 /var/log/messages

Print the first 200 lines of the file to the screen

more

Llike cat, but opens the file one screen at a time rather than all at once

more /etc/userdomains

Browse through the userdomains file. hit Spaceto go to the next page, q to quit

less

Page through files

od

View binary files and data

xxd

Also view binary files and data

gv

View Postscript/PDF files

xdvi

View TeX DVI files

nl

Number lines

touch

Create an empty file

touch /home/burst/public_html/404.html

Create an empty file called 404.html in the directory /home/burst/public_html/

file

Attempts to guess what type of file a file is by looking at it’s content.

file *

Prints out a list of all files/directories in a directory

cp

Copy a file

cp filename filename.bak

Copies filename to filename.bak

cp -a /etc/* /root/etc/

Copies all files, retaining permissions form one directory to another.

cp -av * ../newdirectory

Copies all files and directories recurrsively in the current directory INTO newdirectory

mv

Move a file command

mv oldfilename newfilename

Move a file or directory from oldfilename to newfilename

rm

delete a file

rm filename.txt

deletes filename.txt, will more than likely ask if you really want to delete it

rm -f filename.txt

deletes filename.txt, will not ask for confirmation before deleting.

rm -rf tmp/

recursively deletes the directory tmp, and all files in it, including subdirectories.

chmod

changes file access permissions. The set of 3 go in this order from left to right:
USER – GROUP – EVERONE

0 = — No permission
1 = –X Execute only
2 = -W- Write only
3 = -WX Write and execute
4 = R– Read only
5 = R-X Read and execute
6 = RW- Read and write
7 = RWX Read, write and execute

chmod 000

No one can access

chmod 644

Usually for HTML pages

chmod 755

Usually for CGI scripts

chown

Changes file ownership permissions
The set of 2 go in this order from left to right:
USER – GROUP

chown root myfile.txt

Changes the owner of the file to root

chown root.root myfile.txt

Changes the owner and group of the file to root

stat

Display file attributes

grep

Llooks for patterns in files

grep root /etc/passwd

Shows all matches of root in /etc/passwd

grep -v root /etc/passwd

Shows all lines that do not match root

ln

Create’s “links” between files and directories

ln -s /usr/local/apache/conf/httpd.conf /etc/httpd.conf

Now you can edit /etc/httpd.conf rather than the original. changes will affect the orginal, however you can delete the link and it will not delete the original.

wc

Word count

wc -l filename.txt

Tells how many lines are in filename.txt

find

Utility to find files and directories on your server.

find / -name “filename”

Find the file called “filename” on your filesystem starting the search from the root directory “/”.

locate filename

Find the file name and path of which contains the string “filename”. Run ‘updatedb’ to build index.

EDITORS

Most popular editors available on UNIX platforms.

pico

Friendly, easy to use file editor

pico /home/burst/public_html/index.html

Edit the index page for the user’s website.

vi

Popular editor, tons of features, harder to use at first than pico

vi filename.txt

Edit filename.txt. All commands in vi are preceded by pressing the escape key. Each time a different command is to be entered, the escape key needs to be used. Except where indicated, vi is case sensitive. Fore more commands go to: http://www.intellink.net/vi-qref.htm

H — Upper left corner (home)
M — Middle line
L — Lower left corner
h — Back a character
j — Down a line
k — Up a line
^ — Beginning of line
$ — End of line
l — Forward a character
w — Forward one word
b — Back one word
fc — Find c
; — Repeat find (find next c)

:q! — This force quits the file without saving and exits vi
:w — This writes the file to disk, saves it
:wq — This saves the file to disk and exists vi
:LINENUMBER : EG :25 — Takes you to line 25 within the file
:$ — Takes you to the last line of the file
:0 — Takes you to the first line of the file

emacs

Another popular editor. For more commands go to http://www.hsrl.rutgers.edu/ug/emacs_qref.html

C-\ t — Tutorial suggested for new emacs users.
C-x C-c exit emacs

emacs filename.txt

Edit filename.txt. While you’re in emacs, use the following quickies to get around:

C-x C-f — read a file into emacs
C-x C-s — save a file back to disk
C-x i — insert contents of another file into this buffer
C-x C-v — replace this file with the contents of file you want
C-x C-w — write buffer to specified file

C-f — move forward one character
C-b — move backward one character
C-n — move to next line
C-p — move to previous line
C-a — move to beginning of line
C-e — move to end of line
M-f — move forward one word
M-b — move backword one word
C-v — move forward one screen
M-v — move backward one screen
M-< --- go to beginning of file
M-> — go to end of file

NETWORK

Some of the basic networking utilities.

w

Shows who is currently logged in and where they are logged in from.

who

This also shows who is on the server in an shell.

netstat

Shows all current network connections.

netstat -an

Shows all connections to the server, the source and destination ips and ports.

netstat -rn

Shows routing table for all ips bound to the server.

netstat -an |grep :80 |wc -l

Show how many active connections there are to apache (httpd runs on port 80)

top

Shows live system processes in a formatted table, memory information, uptime and other useful info.

While in top, Shift + M to sort by memory usage or Shift + P to sort by CPU usage

top -u root

Show processes running by user root only.

route -n

Shows routing table for all ips bound to the server.

nslookup yahoo.com

Query your default domain name server (DNS) for an Internet name (or IP number) host_to_find.

top

Shows live system processes in a formatted table, memory information, uptime and other useful info.

While in top, Shift + M to sort by memory usage or Shift + P to sort by CPU usage

top -u root

Show processes running by user root only.

route -n

Shows routing table for all ips bound to the server.

nslookup yahoo.com

Query your default domain name server (DNS) for an Internet name (or IP number) host_to_find.

traceroute yahoo.com

Have a look how you messages travel to yahoo.com

ifconfig

Display info on the network interfaces.

ifconfig -a

Display into on all network interfaces on server, active or inactive..

ping

Sends test packets to a specified server to check if it is responding properly

tcpdump

Print all the network traffic going through the network.

arp

Command mostly used for checking existing Ethernet connectivity and IP address

SYSTEM TOOLS

Many of the basic system utilities used to get things done.

ps

ps is short for process status, which is similar to the top command. It’s used to show currently running processes and their PID.
A process ID is a unique number that identifies a process, with that you can kill or terminate a running program on your server (see kill command).

ps

ps is short for process status, which is similar to the top command. It’s used to show currently running processes and their PID.
A process ID is a unique number that identifies a process, with that you can kill or terminate a running program on your server (see kill command).

ps U username

Shows processes for a certain user

ps aux

Shows all system processes

ps aux –forest

Shows all system processes like the above but organizes in a hierarchy that’s very useful!

kill

terminate a system process

kill -9 PID

Immediately kill process ID

killall program_name

Kill program(s) by name. For example to kill instances of httpd, do ‘killall httpd’

du

Shows disk usage.

du -sh

Shows a summary of total disk space used in the current directory, including subdirectories.

du / -bh | more

Print detailed disk usage for each subdirectory starting at the “/”.

last

Shows who logged in and when

last -20

Shows only the last 20 logins

last -20 -a

Shows last 20 logins, with the hostname in the last field

pwd

Print working directory, i.e., display the name of my current directory on the screen.

hostname

Print the name of the local host. Use netconf (as root) to change the name of the machine.

whoami

Print my login name.

date

Print or change the operating system date and time

time

Determine the amount of time that it takes for a process to complete + other info.

uptime

Show the number days server has been up including system load averages.

uname -a

Displays info on about your server such as kernel version.

free

Memory info (in kilobytes).

lsmod

Show the kernel modules currently loaded. Run as root.

dmesg | less

Print kernel messages.

man topic

Display the contents of the system manual pages (help) on the topic. Do ‘man netstat’ to find all details of netstat command including options and examples.

reboot / halt

Halt or reboot the machine.

mount

Mount local drive or remote file system.

mount -t auto /dev/fd0 /mnt/floppy

Mount the floppy. The directory /mnt/floppy must exist.

mount -t auto /dev/cdrom /mnt/cdrom

Mount the CD. The directory /mnt/cdrom must exist.

sudo

The super-user do command that allows you to run specific commands that require root access.

fsck

Check a disk for errors

COMPRESSION UTILITIES

There are many other compression utilities but these are the default and most widely utilized.

tar

Creating and Extracting .tar.gz and .tar files

tar -zxvf file.tar.gz

Extracts the file

tar -xvf file.tar

Extracts the file

tar -cf archive.tar contents/

Takes everything from contents/ and puts it into archive.tar

gzip -d filename.gz

gzip -d filename.gz

zip

Compress files into.zip

unzip file.zip

Extracting .zip files shell command

compress

Compress files. compress filename

uncompress

Uncompress compressed files. uncompress filename.Z

bzip2

Compress files in bzip2 format

THE (DOT) FILES

The good old dot files. Let’s clear up some confusion here by defining each.

.bash_login

Treated by bash like .bash_profileif that doesn’t exist.

.bash_logout

Sourced by bash login shells at exit.

.bash_profile

Sourced by bash login shells after /etc/profile

.bash_history

The list of commands executed previously.

.profile

Treated by bash like ~/.bash_profile if that and .bash_login don’t exist.

.vimrc

Default “Vim” configuration file.

.emacs

Read by emacs at startup

CONFIGURATION FILES

Listing everything is beyond the scope of this article.

/etc

This directory contains most of the basic Linux system-configuration Files.

/etc/init.d

Contains the permanent copies of System V–style run-level scripts. These scripts are often linked to files in the /etc/rc?.d directories to have each service associated with a script started or stopped for the particular run level. The ? is replaced by the run-level number (0 through 6). (Slackware puts its run-level scripts in the /etc/rc.d directory.)

/etc/cron*

Directories in this set contain files that define how the crond utility runs applications on a daily (cron.daily), hourly (cron.hourly), monthly (cron.monthly), or weekly (cron.weekly) schedule.

/etc/cups

Contains files used to configure the CUPS printing service.

/etc/default

Contains files that set default values for various utilities. For example, the file for the useradd command defines the default group number, home directory, password expiration date, shell, and skeleton directory

/etc/skel

Any files contained in this directory are automatically copied to a user’s home directory when that user is added to the system.

/etc/mail

Contains files used to configure your sendmail mail service.

/etc/security

Contains files that set a variety of default security conditions for your computer.

/etc/sysconfig

Contains important system configuration files that are created and maintained by various services (including iptables, samba, and most networking services).

/etc/passwd

Holds some user account info including passwords (when not “shadowed”).

/etc/shadow

Contains the encrypted password information for users’ accounts and optionally the password aging information.

/etc/xinetd.d

Contains a set of files, each of which defines a network service that the xinetd daemon listens for on a particular port.

/etc/syslogd.conf

The configuration file for the syslogd daemon. syslogd is the daemon that takes care of logging (writing to disk) messages coming from other programs to the system.

/var

Contains variable data like system logging files, mail and printer spool directories, and transient and temporary files.

/var/log

Log files from the system and various programs/services, especially login (/var/log/wtmp, which logs all logins and logouts into the system) and syslog (/var/log/messages, where all kernel and system program message are usually stored).

/var/log/messages

System logs. The first place you should look at if your system is in trouble.

/var/log/utmp

Active user sessions. This is a data file and as such it can not be viewed normally.

/var/log/wtmp

Log of all users who have logged into and out of the system. The last command can be used to access a human readable form of this file.

Apache Shell Commands

Some of the basic and helpful apache commands.

httpd -v

Outputs the build date and version of the Apache server.

httpd -l

Lists compiled in Apache modules

httpd status

Only works if mod_status is enabled and shows a page of active connections

service httpd restart

Restarted Apache web server

MySQL Shell Commands

Some of the basic and helpful MySQL commands.

mysqladmin processlist

Shows active mysql connections and queries

mysqladmin processlist |wc -l

Show how many current open connections there are to mysql

mysqladmin drop database

Drops/deletes the selected database

mysqladmin create database

Creates a mysql database

mysql -u username -p password databasename < data.sql

Restores a MySQL database from data.sql

mysqldump -u username -p password database > data.sql

Backup MySQL database to data.sql

echo “show databases” | mysql -u root -p password|grep -v Database

Show all databases in MySQL server.

mysqldump -u root -p password database > /tmp/database.exp

Dump database including all data and structure into /tmp/database.exp

Thank You,
Preeti S
ThinkSupport.net

CGI is down on the server!

Saturday, May 12th, 2007

First check the Apache error logs.

—————————————————
[Sat Mar 31 21:24:19 2007] [error] [client 65.254.32.50] Premature end of script headers: /home/youngerb/public_html/cgi-bin/at3/admin.cgi
admin.cgi: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory
[Sat Mar 31 21:24:29 2007] [error] [client 59.95.36.168] Premature end of script headers: /home/youngerb/public_html/cgi-bin/at3/admin.cgi
—————————————————

It seems shared libraries libstdc++.so.5 is missing or courrpted on the server.

Just do this

yum install compat-lib*

How to access PHP5 ?

Saturday, April 28th, 2007

How to access PHP5 on your server if you have both PHP4 and PHP5 installed.

You can enabled PHP5 on particular domain by adding following line in .htaccess under public_html folder –

AddType application/x-httpd-php5 .php

Thank you :)

Installing and Configure Squid Proxy Server

Friday, April 27th, 2007

Here are the simple steps to install squid –

Login as root and execute,

cd /usr/local/src
wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE14.tar.gz
tar -zxvf squid-2.5.STABLE14.tar.gz
cd squid-2.5.STABLE14
./configure –prefix=/usr/local/squid –disable-ident-lookups
make all
make install

Add the user squid, create the cache directory and then set permissions.

useradd -d /usr/local/squid/cache/ -r -s /dev/null squid >/dev/null 2>&1
mkdir /usr/local/squid/cache
chown -R squid:squid /usr/local/squid/cache
chown -R squid:squid /usr/local/squid
chmod -R 755 /usr/local/squid/cache

Now generate the cache files

sudo -u squid /usr/local/squid/sbin/squid -z

Now lets change the cache effective user and group to squid.

perl -pi -e ’s/# cache_effective_user nobody/cache_effective_user squid\ncache_effective_group squid/g’ /usr/local/squid/etc/squid.conf

/usr/local/squid/sbin/squid

You are done installing …

Configuration

Open the squid configuration,

pico /usr/local/squid/etc/squid.conf

specific your http_port, by default this is 3128, we will use 8080.

Find

# http_port 3128

and replace it with

http_port 8080

Now lets configure who can access your proxy, remember to only allow access to YOUR ip.

Find

http_access deny CONNECT !SSL_ports

Add below

acl myip 127.0.0.1
acl all src 0.0.0.0/0.0.0.0
acl connectmethod method CONNECT
http_access deny connectmethod
http_access deny all
http_access allow myip

Remember to replace 127.0.0.1 with the ip you want to allow access.

Find

# By default, all headers are allowed (no anonymizing is
# performed).
#
#Default:
# none

Add below

header_access From deny all
header_access Referer deny all
header_access Server deny all
header_access User-Agent deny all
header_access WWW-Authenticate deny all
header_access Link deny all
header_access via deny all

Find

# forwarded_for on

Replace with

forwarded_for off

Save and exit squid.conf, then restart squid.

kill -9 $(ps aux | grep squid | awk ‘{print $2}’)
/usr/local/squid/sbin/squid

You have now configured an anoymous proxy with squid.

Thanks to HOstgeekz :)

Useful MYSQL tips ..

Friday, April 27th, 2007

Check this —

http://souptonuts.sourceforge.net/readme_mysql.htm

Command to know the performance of your HardDisk.

Friday, April 27th, 2007

Here you go –

hdparm -Tt /dev/sda

Note: The command “hdparm” isn’t always compatible with hardware raid (3ware SATA or Dell SCSI PERC 320/DC adapters)