Table of Contents |
---|
Overview
Variables
Variable | Description | Details |
---|---|---|
pass | admin password | base64encoded password |
EMAIL_TO/EMAIL_FROM | ||
SHOWRSS_FEED | ||
TEMP_FOLDER | ||
DEST_FOLDER |
Scripts
In order to make it easier to run your php scripts, we can wrap them in a shell script like the following:
Code Block |
---|
#!/bin/sh
PHP=/mnt/ext/opt/apache/bin/php
SCRIPT_PATH=/share/homes/xxx/scripts/
cd $SCRIPT_PATH
$PHP $SCRIPT_PATH/showRss.php <ACTION> |
showRss.php
Usage:
> php showRss.php <download/removeCompleted/listDownloads/removeAll>
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<?php
//custom variables
$pass=urlencode("xxx_BASE64ENCODEDPASSWORD_xxx");
$EMAIL_TO="xxxx@xxx.com";
$EMAIL_FROM="xxxx@xxx.com";
$SHOWRSS_FEED="http://showrss.info/user/xxxx.rss?magnets=true&namespaces=true&name=clean&quality=hd&re=null |
showrss.php
Code Block |
---|
<?php $SHOWRSS_FEED="http://showrss.info/user/4480.rss?magnets=true&namespaces=true&name=clean&quality=hd&re=null"; $EMAIL_TO="jmehan@yahoo.com"; $EMAIL_FROM="jmehan@yahoo.com"; $EMAIL_SUBJECT="DOWNLOAD STARTED [NAS0] - "; $EMAIL_SUBJECT_FAILED="FAILED TO DOWNLOAD [NAS0] - "; $DB_FILE_NAME="db_showrss.json"; $TEMP_FOLDER="tv/tmp"; $DEST_FOLDER="tv/incoming"; $pass="bGlmZWlzV0Mx";//default variables $baseURL="http://192.168.1.60:8080"; //login to NAS0 $sid = loginToQnap(); //get showRSS Feed $xml = file_get_contents($SHOWRSS_FEED); //echo $xml; //process xml $xml = simplexml_load_file($SHOWRSS_FEED); $showArray = array(); $showdb = json_decode(file_get_contents($DB_FILE_NAME), true); if($showdb==null){ $showdb = array(); } // loop through foreach ($xml->channel->item as $item) { $title = $item->title; $link = $item->link; //echo "title=" . $title ."\n"; //$pattern = "/S(\d{1,2})E(\d{1,2})/"; $pattern = "/(\d{1,2})x(\d{1,2})/"; preg_match($pattern, $title, $matches); if(sizeof($matches)>=3){ $season=intval($matches[1]); $episode=intval($matches[2]); $show = trim(substr($title,0,strrpos($title,$matches[0]))); $showAndEpisode=sprintf("%s %02dx%02d", $show,$season,$episode); }else{ $show=(string)$title; $showAndEpisode=(string)$title; $season=0; $episode=0; } //echo "SHOW: " . $show . "\n"; //echo "SEASON: " . $season . "\n"; //echo "EPISODE: " . $episode . "\n"; $showInfo=array($showAndEpisode, $show, $season, $episode, $link); array_push($showArray, $showInfo); } //echo "\n\n"; sort($showArray); //print_r($showArray); foreach ($showArray as $show) { //echo "show: " . $show[0] . "\n"; //add torrent $found =false; foreach($showdb as &$showEntry){ $showName = $showEntry[0]; if($showName==$show[1]){ $found=true; //echo "Found " . $show[1] . " in showdb \n"; $newSeason=$show[2]; $newEpisode=$show[3]; $lastSeason=$showEntry[1]; $lastEpisode=$showEntry[2]; //echo "--- " . $lastSeason . "x" . $lastEpisode . " -> " . $newSeason . "x" . $newEpisode ."\n"; if($lastSeason == $newSeason && $newEpisode > $lastEpisode){ if(downloadShow($show)){ $showEntry[2]= $newEpisode; echo "U " . $showEntry[0] . " " . $showEntry[1] . "x" . $showEntry[2]localhost:8080"; $DB_FILE_NAME="db_showrss.json"; $EMAIL_SUBJECT_DOWNLOADED="DOWNLOADED - "; $EMAIL_SUBJECT_STARTED="DOWNLOAD STARTED - "; $EMAIL_SUBJECT_FAILED="FAILED TO DOWNLOAD - "; $EMAIL_SUBJECT_REMOVED="CANCELLED DOWNLOAD - "; //login $sid=loginToQnap(); // Process Command Line $cmd="download"; if ($argc > 1) { $cmd=$argv[1]; }; switch ($cmd) { case "download": echo "DOWNLOAD:\n"; download(); break; case "removeCompleted": echo "REMOVE COMPLETED:\n"; removeCompleted(); break; case "listDownloads": echo "LIST DOWNLOADS:\n"; listDownloads(); break; case "removeAll": echo "REMOVE ALL:\n"; removeAll(); break; default: showUsage(); exit(1); } //done exit(0); //*************************************** // download //*************************************** function download(){ global $SHOWRSS_FEED, $DB_FILE_NAME, $baseURL, $sid, $EMAIL_TO, $EMAIL_FROM, $EMAIL_SUBJECT_DOWNLOADED; //get showRSS Feed $xml = file_get_contents($SHOWRSS_FEED); //echo $xml; //process xml $xml = simplexml_load_file($SHOWRSS_FEED); $showArray = array(); $showdb = json_decode(file_get_contents($DB_FILE_NAME), true); if($showdb==null){ $showdb = array(); } // loop through foreach ($xml->channel->item as $item) { $title = $item->title; $link = $item->link; //echo "title=" . $title ."\n"; $pattern = "/(\d{1,2})x(\d{1,2})/"; preg_match($pattern, $title, $matches); if(sizeof($matches)>=3){ $season=intval($matches[1]); $episode=intval($matches[2]); $show = trim(substr($title,0,strrpos($title,$matches[0]))); $showAndEpisode=sprintf("%s %02dx%02d", $show,$season,$episode); }else{ $show=(string)$title; $showAndEpisode=(string)$title; $season=0; $episode=0; } //echo "SHOW: " . $show . "\n"; //echo "SEASON: " . $season . "\n"; //echo "EPISODE: " . $episode . "\n"; }else{ $showInfo=array($showAndEpisode, $show, $season, $episode, $link); echo "F " . $showEntry[0] . " " . $showEntry[1] . "x" . $showEntry[2 array_push($showArray, $showInfo); } //for sort($showArray); //print_r($showArray); foreach ($showArray as $show) { //echo "show: " . $show[0] . "\n"; //add torrent } $found =false; }elseif foreach($newSeason$showdb >as $lastSeason &$showEntry){ $showName = $showEntry[0]; if(downloadShow($show)){ $showEntry[1]= $newSeason; $showEntry[2]= $newEpisode$showName==$show[1]){ $found=true; //echo "U+Found " . $showEntry$show[01] . " in showdb \n"; . $showEntry[1] . "x" . $showEntry$newSeason=$show[2]; . "\n"; }else{ echo "F+ " . $showEntry$newEpisode=$show[03] .; " " . $showEntry[1] . "x" . $lastSeason=$showEntry[21]; . "\n"; } }else{$lastEpisode=$showEntry[2]; // echo "WTF--- " . $lastSeason . "x" . $lastEpisode . " -> " . $newSeason . "x" . $newEpisode ."\n"; } break; if($lastSeason == $newSeason } && $newEpisode } //set latest season/episode if ($found==false) { > $lastEpisode){ if(downloadShow($show)){ echo "A " . $show$showEntry[12]= $newEpisode; . " " . $show[2] . "x" . $show[3] . echo "\nU " ; $showDetails=array($show[1], $show[2], $show[3]); . $showEntry[0] . " " . $showEntry[1] . "x" . $showEntry[2] . "\n"; array_push($showdb, $showDetails); }else{ echo "F " . $show$showEntry[10] . " " . $show$showEntry[21] . "x" . $show$showEntry[32] . "\n" ; } } } //save showdb to file //print_r($showdb); file_put_contents($DB_FILE_NAME,json_encode($showdb)); exit; //*************************************** // downloadShow //*************************************** function downloadShow($show){ global $baseURL; $showAndEpisode = $show[1] . }elseif ($newSeason > $lastSeason ){ if(downloadShow($show)){ $showEntry[1]= $newSeason; $showEntry[2]= $newEpisode; echo "U+ " . $showEntry[0] . " " . $show$showEntry[21] . "x" . $show$showEntry[3]; 2] . "\n"; }else{ // echo "D:F+ " . $showAndEpisode$showEntry[0] . "\n "; . $showEntry[1] . //echo "L: "x" . $show$showEntry[42] . "\n\n"; $temp=$GLOBALS['TEMP_FOLDER']; $dest=$GLOBALS['DEST_FOLDER'] . "/" . $show[1]; } }else{ $realDest = "/share/ echo "WTF " . $dest; $lastSeason . "x" . if (!file_exists($realDest)) { mkdir($realDest, 0777, true)$lastEpisode . " -> " . $newSeason . "x" . $newEpisode ."\n"; } if($show[2]>0){ } $dest=$dest . "/Season " . $show[2]; break; } } ///echo "Dest: " . $dest . "\n"; set latest season/episode if ($found==false) { $realDest = "/share/" . $dest; if (!file_exists($realDest)) if(downloadShow($show)){ mkdir($realDest, 0777, true); } $url = $baseURL . '/downloadstation/V4/Task/AddUrl?sid=' . $GLOBALS['sid'] . '&temp=' . urlencode($temp) . '&move=' . urlencode($dest) . '&url=' . urlencode($show[4]); //echo "URL: " . $url . "\n"; $resp=file_get_contents($url); //echo $resp; if($resp=='{"error":0}'){ //sendNotification($showAndEpisode,true); return true; }else{ sendNotification($showAndEpisode,fail); return false; } echo "A " . $show[1] . " " . $show[2] . "x" . $show[3] . "\n" ; $showDetails=array($show[1], $show[2], $show[3]); array_push($showdb, $showDetails); }else{ echo "F " . $show[1] . " " . $show[2] . "x" . $show[3] . "\n" ; } } } //save showdb to file //print_r($showdb); file_put_contents($DB_FILE_NAME,json_encode($showdb)); } //*************************************** // sendNotificationdownloadShow //*************************************** function sendNotificationdownloadShow($showAndEpisode,$success$show){ if(success == true){ global $baseURL,$sid, $TEMP_FOLDER, $DEST_FOLDER; $showAndEpisode $subject= $show[1] . "\ "" . $GLOBALS['EMAIL_SUBJECT'$show[2] . $showAndEpisode"x" . "\""$show[3]; }else{ $subject= "\"" . $GLOBALS['EMAIL_SUBJECT_FAILED']//echo "D: " . $showAndEpisode . "\n""; } $cmd= getCwd() . "/sendEmail.sh " . $subject . " " . $GLOBALS['EMAIL_FROM'] . " " . $GLOBALS['EMAIL_TO'] . " " . $subject; //echo "cmd=" . $cmd . "\n"; shell_exec($cmd); } //*************************************** // endsWith //*************************************** function endsWith($haystack, $needle) { $length = strlen($needle)//echo "L: " . $show[4] . "\n\n"; $temp=$TEMP_FOLDER; $dest=$DEST_FOLDER . "/" . $show[1]; $realDest = "/share/" . $dest; if (!file_exists($realDest)) { mkdir($realDest, 0777, true); } if($show[2]>0){ $dest=$dest . "/Season " . $show[2]; } //echo "Dest: " . $dest . "\n"; $realDest = "/share/" . $dest; if ($length == 0(!file_exists($realDest)) { mkdir($realDest, return true0777, true); } return (substr($haystack, -$length) === $needle); } //*************************************** // getSid //*************************************** function getSid($xml){ $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, $xml, $values, $tags); xml_parser_free($parser); //print_r($values); // loop through the structures foreach ($values as $val) { $tag=$val['tag']; $value=$val['value']; if($tag=="authSid"){ $url = $baseURL . '/downloadstation/V4/Task/AddUrl?sid=' . $sid . '&temp=' . urlencode($temp) . '&move=' . urlencode($dest) . '&url=' . urlencode($show[4]); //echo "URL: " . $url . "\n"; $resp=file_get_contents($url); //echo $resp; if($resp=='{"error":0}'){ //sendNotification($showAndEpisode,"started"); return true; }else{ sendNotification($showAndEpisode,"failed"); return $valuefalse; } } //echo "tag=" . $tag . ", value=" . $value . "\n"; } } //*********** //*************************************** // loginToQnapsendNotification //*************************************** function loginToQnapsendNotification($showAndEpisode,$status){ global $baseURL; $resp = file_get_contents($baseURL . '/cgi-bin/authLogin.cgi?user=admin&pwd=bGlmZWlzV0Mx'); //echo $resp; $sid=getSid($resp); //echo "sid='" . $sid . "'\n"; $resp=file_get_contents($baseURL . '/downloadstation/V4/Misc/Login?sid=' . $sid); return $sid; } ?> |
removeTorrents.php
Code Block |
---|
<?php //$EMAIL_TO="jmehan@yahoo.com"; $EMAIL_TO="jennymehan@yahoo.com,jmehan@yahoo.com"; $EMAIL_FROM="jmehan@yahoo.com"; $EMAIL_SUBJECT="TORRENT DOWNLOADED - "; $pass="bGlmZWlzV0Mx"; $baseURL="http://192.168.1.60:8080"; //login $resp=file_get_contents($baseURL . '/cgi-bin/authLogin.cgi?user=admin&pwd=' . $pass); //echo $resp; $sid=getSid($resp); //echo "sid='" . $sid . "'\n"; $resp=file_get_contents($baseURL . '/downloadstation/V4/Misc/Login?sid=' . $sid); //echo $resp . "\n"; $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Query?start=0&limit=25&status=completed&from=0&to=25&sid=' . $sid); //echo $resp . "\n"; $json = json_decode($resp); $data = $json->{'data'}; //var_dump($data); file_put_contents("/var/log/download.log",$json,FILE_APPEND | LOCK_EX); //echo "CWD: " . getCwd() . "\n"; foreach($data as $torrent){ $name= $torrent->{'source_name'}; $hash=$torrent->{'hash'}; //echo "torrent: " . $name . "\n"; //echo "hash: " . $hash . "\n"; if(endsWith($name,".torrent")){ // echo "torrent file - just delete\n"; }else{ //echo "file - notify completion\n"; $subject= "\"" . $EMAIL_SUBJECT . $name . "\""; $cmd= getCwd() . "/sendEmail.sh " . $subject . " " . $EMAIL_TO . " " . $EMAIL_FROM . " " . $subject; //echo "cmd=" . $cmd . "\n"; shell_exec($cmd); } //remove torrent $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Remove?clean=0&hash=' . $hash . '&sid=' . $sid); //echo $resp ."\n"; //break; } //*************************************** // endsWith //*************************************** function endsWith($haystack, $needle) { $length = strlen($needle); if ($length == 0) { return true; } return (substr($haystack, -$length) === $needle); } //*************************************** // getSid //*************************************** function getSid($xml){ $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, $xml, $values, $tags); xml_parser_free($parser); //print_r($values); // loop through the structures foreach ($values as $val) { $tag=$val['tag']; $value=$val['value']; if($tag=="authSid"){ return $value; } //echo "tag=" . $tag . ", value=" . $value global $EMAIL_SUBJECT_DOWNLOADED, $EMAIL_SUBJECT_STARTED,$EMAIL_SUBJECT_REMOVED, $EMAIL_SUBJECT_FAILED, $EMAIL_FROM, $EMAIL_TO; if($status == "started"){ $subject= "\"" . $EMAIL_SUBJECT_STARTED . $showAndEpisode . "\""; }else if($status == "downloaded"){ $subject= "\"" . $EMAIL_SUBJECT_DOWNLOADED . $showAndEpisode . "\""; }else if($status == "failed"){ $subject= "\"" . $EMAIL_SUBJECT_FAILED . $showAndEpisode . "\""; }else if($status == "removed"){ $subject= "\"" . $EMAIL_SUBJECT_REMOVED . $showAndEpisode . "\""; }else{ $subject= "\"" . "ERROR " . $showAndEpisode . "\""; } $cmd= getCwd() . "/sendEmail.sh " . $subject . " " . $EMAIL_FROM . " " . $EMAIL_TO . " " . $subject; shell_exec($cmd); } //*************************************** // removeCompleted //*************************************** function removeCompleted(){ global $baseURL, $sid, $EMAIL_TO, $EMAIL_FROM, $EMAIL_SUBJECT_DOWNLOADED; $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Query?start=0&limit=25&status=completed&from=0&to=25&sid=' . $sid); //echo $resp . "\n"; } } ?> |
showTorrents.php
Code Block |
---|
<?php $EMAIL_TO="jmehan@yahoo.com"; $EMAIL_FROM="jmehan@yahoo.com"; $EMAIL_SUBJECT="TORRENT DOWNLOADED [NAS0] - "; $pass="bGlmZWlzV0Mx"; $baseURL="http://192.168.1.60:8080"; //login $resp = file_get_contents($baseURL . '/cgi-bin/authLogin.cgi?user=admin&pwd=' . $pass); //echo $resp; $sid=getSid($resp); //echo "sid='" . $sid . "'\n"; $resp=file_get_contents($baseURL . '/downloadstation/V4/Misc/Login?sid=' . $sid); //echo $resp$json = json_decode($resp); $data = $json->{'data'}; //var_dump($data); file_put_contents("/var/log/download.log",$json,FILE_APPEND | LOCK_EX); //echo "CWD: " . getCwd() . "\n"; if(count($data)==0){ echo "- no completed downloads\n"; }else{ foreach($data as $torrent){ $name= $torrent->{'source_name'}; $hash=$torrent->{'hash'}; echo "removing torrent: " . $name . "\n"; $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Query?start=0&limit=100&status=all&from=0&to=100&sid=' . $sid); echo $resp . "\n"; $json = json_decode($resp); $data = $json->{'data'}; //var_dump($data); //echo "CWD: " . getCwd() . "\n"; foreach($data as $torrent){ $name= $torrent->{'source_name'}; echo "torrent: " . $name . "\n"; } //*************************************** // endsWith //******** //echo "hash: " . $hash . "\n"; if(endsWith($name,".torrent")){ // echo "torrent file - just delete\n"; }else{ sendNotification($name,"downloaded"); } //remove torrent $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Remove?clean=0&hash=' . $hash . '&sid=' . $sid); } } } //******************************* function endsWith($haystack, $needle) { $length = strlen($needle); if ($length == 0) { return true; } return (substr($haystack, -$length) === $needle); } //******** // removeAll //**************************************** // getSid //*************************************** function getSid($xml){ $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, $xml, $values, $tags); xml_parser_free($parser); //print_r($values); // loop through the structures foreach ($values as $val) { $tag=$val['tag'] function removeAll(){ global $baseURL, $sid, $EMAIL_TO, $EMAIL_FROM, $EMAIL_SUBJECT_DOWNLOADED; $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Query?start=0&limit=100&status=all&from=0&to=100&sid=' . $sid); $json = json_decode($resp); $data = $json->{'data'}; if(count($data)==0){ echo "- no downloads\n"; }else{ foreach($data as $torrent){ $name= $torrent->{'source_name'}; $hash=$torrent->{'hash'}; if(endsWith($name,".torrent")){ // echo "torrent file - just delete\n"; }else{ echo "- " . $name . "\n"; $value=$val['value']; //echo "file - if($tag=="authSid"){notify completion\n"; return $value;//sendNotification($name,"removed"); } //echo "tag=" . $tag . ", value=" . $value . "\n"; } } ?> |
removeAllTorrents.php
Code Block |
---|
<?php $EMAIL_TO="j****@yahoo.com"; $EMAIL_FROM="j****@yahoo.com"; $EMAIL_SUBJECT="TORRENT DOWNLOADED [NAS] - "; $pass="xxx"; $baseURL="http://xxx.xxx.xxx.xxx:8080"; //login $resp = file_get_contents($baseURL . "/cgi-bin/authLogin.cgi?user=admin&pwd=" . $pass ); $sid=getSid($resp); $resp=file_get_contents($baseURL . '/downloadstation/V4/Misc/Login?sid=' . $sid); remove torrent $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Remove?clean=0&hash=' . $hash . '&sid=' . $sid); } } } //*************************************** // listDownloads //*************************************** function listDownloads(){ global $baseURL, $sid; $resp=file_get_contents($baseURL . '/downloadstation/V4/Task/Query?start=0&limit=100&status=all&from=0&to=100&sid=' . $sid); $json = json_decode($resp); $data = $json->{'data'}; foreach($data as $torrent){ $name= $torrent->{'source_name'}; $hash=$torrent->{'hash'}; if(endsWith($name,".torrent")){ // echo "torrent file - just delete\n"; }else //echo $resp . "\n"; $json = json_decode($resp); $data = $json->{'data'}; if(count($data)==0){ //echo "file - notifyno completiondownloads\n"; }else{ $subject= "\"" . $EMAIL_SUBJECT . $name . "\""; foreach($data as $torrent){ $cmd= getCwd() . "/sendEmail.sh " . $subject . " " . $EMAIL_FROM . "$name= $torrent->{'source_name'}; echo "torrent: " . $EMAIL_TO$name . "\n"; " . $subject;} //echo "cmd=" . $cmd . "\n"; //shell_exec($cmd); } //remove torrent $resp=file_get_contents(} } //*************************************** // loginToQnap //*************************************** function loginToQnap(){ global $baseURL, $pass; //login $vars = 'user=admin&pass=' . $pass; $ch = curl_init( $baseURL . '/downloadstation/V4/Task/Remove?clean=0&hash=' . $hash . '&sid=' . $sid); //echo $resp ."\n"; //break; } //*************************************** // endsWith //*************************************** function endsWith($haystack, $needle) { $length = strlen($needle); if ($length == 0) { return true; } return (substr($haystack, -$length) === $needle)Misc/Login' ); curl_setopt( $ch, CURLOPT_POST, 1); curl_setopt( $ch, CURLOPT_POSTFIELDS, $vars); curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt( $ch, CURLOPT_HEADER, 0); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1); $resp = curl_exec( $ch ); //echo $resp; $sid = json_decode($resp)->{'sid'}; //echo "sid='" . $sid . "'\n"; return $sid; } //*************************************** // getSidendsWith //*************************************** function getSid($xml){ endsWith($haystack, $needle) { $parser$length = xml_parser_createstrlen($needle); if xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING,($length == 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); { return true; } xml_parse_into_struct($parser, $xml, $values, $tags); xml_parser_free($parser); //print_r($values); // loop through the structures foreach ($values as $val) { $tag=$val['tag']; $value=$val['value']; if($tag=="authSid"){ return $value; } //echo "tag=" . $tag . ", value=" . $value . "\n"; } } ?> return (substr($haystack, -$length) === $needle); } //****************************************** // showUsage //****************************************** function showUsage(){ global $argv; echo "Usage: php " . $argv[0] . " download/removeCompleted/listDownloads/removeAll\n"; } ?> |
sendEmail.sh
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
#!/bin/sh
SUBJECT=$1
TO=$2
FROM=$3
CONTENT=$4
echo "Subject: $SUBJECT"
echo "From: $FROM"
echo "To: $TO"
echo "CONTENT $CONTENT"
echo "Subject: $SUBJECT" > mail.txt
echo "From: $FROM" >> mail.txt
echo "To: $TO" >> mail.txt
echo "" >> mail.txt
echo $CONTENT >> mail.txt
cat mail.txt |sendmail -t
#rm mail.txt |