problem z uruchmianiem skryptu z crona ( lub rc.local)

Potrzebujesz pomocy z C, C++, perl, python, itp.
kovir
Posty: 2
Rejestracja: 24 września 2012, 18:26

problem z uruchmianiem skryptu z crona ( lub rc.local)

Post autor: kovir »

Witam

MAm sklecony napredce skrypt czytający z portu serial przesyłane z arduino bezprzewodowo dane. Jeśli odpale go recznie wszystko dziala - czyta dane i jesli napotka odpowiedni ciag znakow umieszcza liczbe w mysql. Chodzi mi o to, żeby uruchamiał sie automatycznie przy starcie ( nie udalo mi sie to więc próbowałem obejść to uruchamianiem go z crona - jesli nie ma pliku kontrolka.txt uruchamia się skrypt i leci w pętli - jeśli jest kontrolka - konczy swoje działanie ( w domyśle istnieje już instancja tego programu).

Problem w tym, że cron odpala ten skrypt (w logach widać, pojawia się też plik kontrolka.txt) ale chyba nie czyta wogole danych z portu szeregowego a przynajmniej nie mam wartości w mysql.

Od razu proszę o nie wyśmiewanie siermiężnego skryptu - to moje początki....

Byłbym zobowiązany gdyby ktoś mógł pomóc, naprowadzić....

Kod: Zaznacz cały


#! /bin/bash


# mysql username
SQLUSER="root"
# mysql password
SQLPASS="haslohaslo"
# mysql server hostname/IP
SQLHOST="192.168.1.114"
# prints date in YYYY-MM-DD format
#SQLDATE=$(date +%Y\-%m\-%d)
#SQLTIME=$(date +%H\:%M\:%S)
# database to use (created with: mysql> create database db_whois ;)
SQLDB="hermes"
# table inside the database to use
# created with: mysql> CREATE TABLE tbl_scraped(id INT NOT NULL AUTO_INCREMENT,PRIMARY KEY(id),domain VARCHAR(50),whois_data TEXT,date DATE);
SQLTBL="tbl_scraped"


`


if [ -e /run/kontrolka.txt ] ; then
  echo "Masz plik kontrolka"
exit
fi




ARDUINO_PORT=/dev/ttyO2
ARDUINO_SPEED=9600


# Set speed for usb
stty -F $ARDUINO_PORT ispeed $ARDUINO_SPEED ospeed $ARDUINO_SPEED raw
exec 6<$ARDUINO_PORT
echo "." > /run/kontrolka.txt


# Read data from Arduino
while read -u 6 f ;do




SQLDATE=$(date +%Y\-%m\-%d)
SQLTIME=$(date +%H\:%M\:%S)


      # Remove trailing carriage return character added
      # by println to satisfy stupid MS-DOS Computers
   f=${f:0:${#f} - 1}


temp=`echo $f | cut -d : -f 2`
senderid=`echo $f | cut -d : -f 1`


if [ $senderid = "Station1" ]; then 
temp_station1=`echo $f | cut -d : -f 2`
hum_station1=`echo $f | cut -d : -f 3`


echo "$(date) I think this is from Station1... temp: $temp_station1, wilg.: $hum_station1 "


elif [ $senderid == "Gas" ]; then
#tlazienka=`echo $f | cut -d : -f 6`
gaz=`echo $f | cut -d : -f 2`
echo "$(date) Spalono kolejne 0,01 m3 gazu"
echo "INSERT INTO gaz VALUES (NULL,'$SQLDATE','$SQLTIME','$gaz');"\
|mysql -u$SQLUSER -p$SQLPASS -h$SQLHOST $SQLDB
echo "gaz done"
elif [ $senderid == "pressure" ]; then
cisnienie=`echo $f | cut -d : -f 2`
echo "$(date) aktualne ciśnienie $cisnienie "
echo "INSERT INTO pressure VALUES (NULL,'$SQLDATE','$SQLTIME','$cisnienie');"\
|mysql -u$SQLUSER -p$SQLPASS -h$SQLHOST $SQLDB


else
 echo "nieznany nadawca"
fi
# Do something with the data read
#      echo "$(date) $f was read."


#echo $tkuchnia > /var/www/tkuchnia.txt
#echo $hkuchnia > /var/www/hkuchnia.txt
#echo $tlazienka > /var/www/tlazienka.txt
#echo $hlazienka > /var/www/hlazienka.txt
done


franek4always
Posty: 42
Rejestracja: 02 stycznia 2007, 21:25

Post autor: franek4always »

Stawiam na brak zmiennych środowiskowych, domyślnych ścieżek bądź brak uprawnień.
Opal skrypt z cron'a z przekierowaniem wyjść do pliku: "nazwa_skryptu" &>/tmp/wynik.out - a dowiesz się co nie trybi :)
Ostatnio zmieniony 25 maja 2016, 14:59 przez franek4always, łącznie zmieniany 1 raz.
Awatar użytkownika
Yampress
Administrator
Posty: 6416
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

A skryp ma prawa +x ?
ODPOWIEDZ