Mysql client till temploggern

Generella Linux-frågor och frågor gällande Linuxmjukvara som saknar egen forumkategori skall postas i detta forum
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
Perra_V
Wannabe
Inlägg: 9
Blev medlem: 02 dec 2008, 22:27
Ort: Sundsvall

Mysql client till temploggern

Inlägg av Perra_V »

Hej
Är det nån som har installerat mysql client eller liknade för OpenWRT? isåfall hur, jag skulle vilja skicka data till en mysqlserver. 8)
/Perra
Senast redigerad av Niklas den 23 dec 2008, 05:35, redigerad totalt 2 gång.
Anledning: Tog bort [Löst] från ämnet och markerade tråden som löst via rätt funktion istället.
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Mysql client till temploggern

Inlägg av Niklas »

Perra_V skrev:Hej
Är det nån som har installerat mysql client eller liknade för OpenWRT? isåfall hur, jag skulle vilja skicka data till en mysqlserver. 8)
/Perra
Det går ju att dra in php och mysql-stöd tex så kan du via php stoppa in data i en databas.
Använder du något scriptspråk på enheten idag?
Användarvisningsbild
Troy McClure
Tar hemautomation på allvar
Inlägg: 66
Blev medlem: 13 mar 2008, 12:47
Ort: Bångbro

Re: Mysql client till temploggern

Inlägg av Troy McClure »

Jag kör ett cronjob var 5:e minut som ser ut såhär:

Kod: Markera allt

*/5 * * * * /root/temp.sh >/dev/null 2>&1
I filen temp.sh körs bl.a. följande rader:

Kod: Markera allt

temp=`/usr/bin/digitemp -a -q | awk {'print $2'}`
wget -q -O - "http://www.mindomän.se/temper.php?t=${temp}"
temper.php ser ut såhär:

Kod: Markera allt

<?php
$mysql_user = "användarnamnet";
$mysql_pass = "lösenordet";
$mysql_db = "databasnamnet";
$mysql_server = "databasservern";
// Är temperaturen över 50 grader så vill jag inte logga den, då något uppenbarligen är fel. 
// Jag låter scriptet skicka ett mail som meddelar mig detta.
if((int)$_GET["t"] > 50)
{
	$Name = "Temperaturfel"; //senders name 
	$email = "jag@mindomän.se"; //senders e-mail adress 
	$recipient = "jag@mindomän.se"; //recipient 
	$mail_body = date("Y-m-d H:i:s", time()); //datum och tid
	$subject = "Temp error"; //subject 
	$header = "From: ". $Name . " <" . $email . ">\r\n"; //optional headerfields 
	mail($recipient, $subject, $mail_body, $header); //mail command
}
// I annat fall skickar vi in värdet och tiden i databasen
elseif(($connect = mysql_connect($mysql_server, $mysql_user, $mysql_pass)) && $_GET["t"])
{
	$temp = $_GET["t"];
	mysql_select_db($mysql_db, $connect);
	$query_0 = "insert into temp values(NULL, NULL, $temp) ";
	mysql_query($query_0, $connect);
	mysql_close($connect);
}
?>
Tabellen för temperaturen ser ut såhär:

Kod: Markera allt

CREATE TABLE `temp` (
  `id` int(7) NOT NULL auto_increment,
  `datum` timestamp(14) NOT NULL,
  `temp` float(4,2) default '99.99',
  PRIMARY KEY  (`id`)
)
Denna tabell borde räcka i ungefär 100 år enligt mina beräkningar.
Perra_V
Wannabe
Inlägg: 9
Blev medlem: 02 dec 2008, 22:27
Ort: Sundsvall

Re: Mysql client till temploggern

Inlägg av Perra_V »

Niklas skrev:
Perra_V skrev:Hej
Är det nån som har installerat mysql client eller liknade för OpenWRT? isåfall hur, jag skulle vilja skicka data till en mysqlserver. 8)
/Perra
Det går ju att dra in php och mysql-stöd tex så kan du via php stoppa in data i en databas.
Använder du något scriptspråk på enheten idag?
Näe, har inte stöd för nåt språk , skulle vilja lägga in mysql-stöd,(men har inte hittat nån how-to,) då den bara skall användas som logger och själva databaserna ligger på en databas server.

/Perra
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Mysql client till temploggern

Inlägg av Niklas »

Perra_V skrev:
Niklas skrev:
Perra_V skrev:Hej
Är det nån som har installerat mysql client eller liknade för OpenWRT? isåfall hur, jag skulle vilja skicka data till en mysqlserver. 8)
/Perra
Det går ju att dra in php och mysql-stöd tex så kan du via php stoppa in data i en databas.
Använder du något scriptspråk på enheten idag?
Näe, har inte stöd för nåt språk , skulle vilja lägga in mysql-stöd,(men har inte hittat nån how-to,) då den bara skall användas som logger och själva databaserna ligger på en databas server.

/Perra
Då kan du installera php-stöd tillsammans med mysql-stöd och köra via php om du vill.
Paketet "php5" och "php5-mod-mysql" kanske räcker. Kör inte php på min så jag vet inte. :)
PerM
Hemautomation - det är mer än en hobby
Inlägg: 822
Blev medlem: 23 feb 2007, 14:46
Ort: Vallentuna
Kontakt:

Re: Mysql client till temploggern

Inlägg av PerM »

Troy McClure skrev:Jag kör ett cronjob var 5:e minut som ser ut såhär:

Kod: Markera allt

...
elseif(($connect = mysql_connect($mysql_server, $mysql_user, $mysql_pass)) && $_GET["t"])
{
	$temp = $_GET["t"];
	mysql_select_db($mysql_db, $connect);
	$query_0 = "insert into temp values(NULL, NULL, $temp) ";
	mysql_query($query_0, $connect);
	mysql_close($connect);
}
...
En liten kommentar på den där koden. Du kanske redan är medveten om det, men den där koden är fullt öppen för en SQL-injection attack iom att du använder $_GET["t"] direkt i anropet till mysql_query(). Nu tänker jag inte publicera hur det går till, men du bör absolut ta en titt på mysql_real_escape_string så du kan skydda dig.
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Mysql client till temploggern

Inlägg av Niklas »

PerM skrev:
Troy McClure skrev:Jag kör ett cronjob var 5:e minut som ser ut såhär:

Kod: Markera allt

...
elseif(($connect = mysql_connect($mysql_server, $mysql_user, $mysql_pass)) && $_GET["t"])
{
	$temp = $_GET["t"];
	mysql_select_db($mysql_db, $connect);
	$query_0 = "insert into temp values(NULL, NULL, $temp) ";
	mysql_query($query_0, $connect);
	mysql_close($connect);
}
...
En liten kommentar på den där koden. Du kanske redan är medveten om det, men den där koden är fullt öppen för en SQL-injection attack iom att du använder $_GET["t"] direkt i anropet till mysql_query(). Nu tänker jag inte publicera hur det går till, men du bör absolut ta en titt på mysql_real_escape_string så du kan skydda dig.
Kan inte du ge ett exempel? Jag har skrivit en funktion i ASP men vill skriva en i PHP (som jag håller på att lära mig).
RensaSQL("text"). ;)
Jag bryr mig inte om att skydda mina script som enbart min server har tillgång till. Sådant som inte är öppet utåt.
PerM
Hemautomation - det är mer än en hobby
Inlägg: 822
Blev medlem: 23 feb 2007, 14:46
Ort: Vallentuna
Kontakt:

Re: Mysql client till temploggern

Inlägg av PerM »

Är det inte öppet utåt så är ju risken mindre, tills dess att du öppnar upp något och glömmer detta ;)

Jag har som praxis att alltid skriva "professional-grade" kod oavsätt om det är ett snabbhack eller inte...men så kallas jag för kontroll-freak också.... :roll:
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Mysql client till temploggern

Inlägg av Niklas »

PerM skrev:Är det inte öppet utåt så är ju risken mindre, tills dess att du öppnar upp något och glömmer detta ;)

Jag har som praxis att alltid skriva "professional-grade" kod oavsätt om det är ett snabbhack eller inte...men så kallas jag för kontroll-freak också.... :roll:
Jag försöker att alltid göra detsamma men sånt som hamnar utan för wwwroot:en är jag mindre försiktig med. ;-)
Användarvisningsbild
elf98
Hemautomation - det är mer än en hobby
Inlägg: 5434
Blev medlem: 27 okt 2006, 13:49
Ort: Linköping
Kontakt:

Re: Mysql client till temploggern

Inlägg av elf98 »

Tråd flyttad till mjukvaru-forumet.
Grundade m.nu & temperatur.nu

Driver temperatur.nu

Bild
Användarvisningsbild
Troy McClure
Tar hemautomation på allvar
Inlägg: 66
Blev medlem: 13 mar 2008, 12:47
Ort: Bångbro

Re: Mysql client till temploggern

Inlägg av Troy McClure »

Per M>> Hehe, jo jag är medveten om det. Men jag anser mig själv besitta förmågan att veta när jag kommer undan med fulhack och när jag inte gör det. Jag har till och med skrivit ett annat namn på php-filen än vad som är fallet i verkligheten. Försök injicera något i den om du hittar den! :wink:
Men det är bra att du är på tårna!

Edit: Enklaste sättet att göra inserten säker i detta fall är att ändra koden

Kod: Markera allt

$temp = $_GET["t"];
till

Kod: Markera allt

$temp = (float)$_GET["t"];
Perra_V
Wannabe
Inlägg: 9
Blev medlem: 02 dec 2008, 22:27
Ort: Sundsvall

Re: Mysql client till temploggern

Inlägg av Perra_V »

Hej igen
Frågan kvarstår, även om jag har fått en del tips med PHP.
Hur lägger jag på Mysql stöd på openwrt burken??
:?
/Perra
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Mysql client till temploggern

Inlägg av Niklas »

Perra_V skrev:Hej igen
Frågan kvarstår, även om jag har fått en del tips med PHP.
Hur lägger jag på Mysql stöd på openwrt burken??
:?
/Perra
Lägg in php med mysql-stöd och sedan kan du nog få tips om hur du via ett php-script kan skicka uppgifterna till en mysql-databar.
Perra_V
Wannabe
Inlägg: 9
Blev medlem: 02 dec 2008, 22:27
Ort: Sundsvall

Re: Mysql client till temploggern

Inlägg av Perra_V »

Niklas skrev:
Perra_V skrev:Hej igen
Frågan kvarstår, även om jag har fått en del tips med PHP.
Hur lägger jag på Mysql stöd på openwrt burken??
:?
/Perra
Lägg in php med mysql-stöd och sedan kan du nog få tips om hur du via ett php-script kan skicka uppgifterna till en mysql-databar.
Jo ja, PHP kodningen och mysql biten går jag iland med, men jag fattar inte hur jag skall få in stödet i burken, har varit och kollat på http://openwrt.org/ men inte blivit klok på hur man gör,Är helt n00b på linux :shock:
/Perra
Niklas
Moderator
Inlägg: 1019
Blev medlem: 22 mar 2008, 21:13
Ort: Stockholm
Kontakt:

Re: Mysql client till temploggern

Inlägg av Niklas »

Perra_V skrev:
Niklas skrev:
Perra_V skrev:Hej igen
Frågan kvarstår, även om jag har fått en del tips med PHP.
Hur lägger jag på Mysql stöd på openwrt burken??
:?
/Perra
Lägg in php med mysql-stöd och sedan kan du nog få tips om hur du via ett php-script kan skicka uppgifterna till en mysql-databar.
Jo ja, PHP kodningen och mysql biten går jag iland med, men jag fattar inte hur jag skall få in stödet i burken, har varit och kollat på http://openwrt.org/ men inte blivit klok på hur man gör,Är helt n00b på linux :shock:
/Perra
Det bör bara vara att installera två paket.
php5 och php5-mod-mysql
Det lär du kunna göra via

Kod: Markera allt

opkg update
opkg install php5 php5-mod-mysql php5-cli
Det är möjligt att det är ipkg istället för opkg som gäller för dig.
i en terminal.
Skriv svar