Author Archive

Sending text message (SMS) to your mobile phone from your server via GMail SMTP using PHP

In some cases I need to send a warning message or a notice to my cell phone when certain tasks are done or caught some unexpected errors by server cronjob. This is a quite exciting feature, I don’t need to sit in front of my computer to do the boring monitoring job.

With some googling, there is something called Email to SMS Gateway (here is the gateway list) that allow you to send an Email to phone company, and phone company automatically delivery the Email content as text message to the cell phone owner. In my case, for example, I need to send SMS to cell phone number 416-999-9999 and phone carrier is Rogers. Regarding to the gateway list, means I should send Email to 4169999999@pcs.rogers.com

My first thought about sending out Email is using simple PHP mail() function. Unluckily, the Email sent out couldn’t pass phone carrier’s spam filter (Not exactly know what happened, my guess is my domain can’t pass Reverse DNS checking).

With some googling again for sloving send out Email issue, I found out GMail accounts can actually be used as an SMTP server. If this is working, that means phone carrier directly receive email from GMail.

Here’s a code snippet on how to do it. In the code, I used PHPMailer class.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
require("class.phpmailer.php");
 
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Host		= "ssl://smtp.gmail.com";
$mail->Port		= "465";
$mail->SMTPDebug  = 2; 
 
$mail->Username = "YOUR_GMAIL_ACCOUNT@gmail.com"; // SMTP username
$mail->Password = "YOUR_GMAIL_LOGIN_PASSWORD"; // SMTP password
 
$from_email = "example@example.com"; //Reply to this email ID
$to_email="4169999999@pcs.rogers.com"; // Recipients email ID
$to_name="to_this_name"; // Recipient's name
 
$mail->From = $from_email;
$mail->FromName = "from_this_name";
$mail->AddAddress($to_email,$to_name);
$mail->AddReplyTo($from_email,"Webmaster");
$mail->WordWrap = 50; // set word wrap
 
$mail->Subject = "TEXT_MESSAGE_SUBJECT";
$mail->Body = "TEXT_MESSAGE_CONTENT"; //HTML Body
$mail->AltBody = "TEXT_MESSAGE_CONTENT"; //Text Body
 
$mail->Send();

Have fun!

Thanks for devsoft to point out this. You must configure PHP to enable php_openssl extension.

  • Share/Save/Bookmark

Synchronize linux date and time using ntpdate

ntpdate synchronize and set computers’ date and time via Network Time Protocol (NTP) server(s).

1
/usr/sbin/ntpdate -u 0.fedora.pool.ntp.org

0.fedora.pool.ntp.org is NTP server. If this server is not working, find another one.

  • Share/Save/Bookmark

Download all file recursively from ftp server

ncftpget is able to let you download entire ftp directory and sub directories from remote ftp server.

Install ncftp client

1
yum install ncftp

Start downloading

1
ncftpget -R -v -u "username"  -p "userpassword" ftp.someserver.com /home/save_at_here /downloads

where,

  • -R : download all subdirectories and files (recusive)
  • -v : verbose, show download activity
  • -u : ftp server user name
  • -p : ftp server user login (if skipped, will prompt to ask password)
  • ftp.someserver.com : ftp server domain or IP
  • /home/save_at_here : all downloaded file will save in this directory
  • /downloads : remote ftp server directory you wish to copy
  • Share/Save/Bookmark

Backup MySQL databases to remote server using mysql-zrm

Recently I use mysql-zrm to backup a large databases from a client server. I can backup all databases or a set of database or maybe some of tables with one line linux command. Pretty easy to use.

You may imagine that mysql-zrm is a strong management tool of mysql, mysqldump and mysqlhotcopy.  The key benifits for me are : I can backup all databases at once with my databases are automatically created if a new client comes; mysql-zrm is able to save compressed data to different folder, so I can keep saved data up to seven days (you may do it one month or maybe one year); It also has a scheduler to do your task every certain time you want.

Installation:

1. login to your backup server

2. Download rpm from http://www.zmanda.com/download-zrm.php

3. If you don’t have Perl installed, run ” yum install perl ”

4. run ” rpm -ivh MySQL-zrm-2.0-1.noarch.rpm ”

5. “  vi /etc/mysql-zrm/mysql-zrm.conf ” update following parameters in file

backup-mode=logical [ ideally raw for myisam engine and logical for innodb. but I recommend using logical for default. Because when I use raw for default value, and if there is table with innodb engine exist, zrm will prompt me password for mysql@(server_ip) which have no idea about linux mysql user login ]

destination=/home/mybackup_dir  [ specify where backup files will be stored]

Start backup:

mysql-zrm –action backup –host xxx.xxx.xxx.xxx –user aabb –password ccdd  –backup-set abcd

where
–host is remote server IP for MySQL
–user is remote MySQL server  user login
–password is remote MySQL server  user login password
–backup-set is backup folder name

Result:

after running the command, you will get backup file in the path look like this

/home/mybackup_dir/abcd/20081128195236

Restore database to local server:

/usr/bin/mysql-zrm-restore –user=1122 –password=2233 –source-directory=/home/mybackup_dir/abcd/20081128195236
check out your backup server MySQL database. :-)

  • Share/Save/Bookmark