Raspberry PI Arduino communication - raspberry-pi

I have a Raspberry Pi and Arduino connected via UART(TxRx) and I have a website HTML hosted on the rPi.
What do i need to do that when a button is pressed on the website a string would be sent to the arduino over UART.
I have already tried sending strings from rPi's terminal via command echo test > /dev/ttyAMA0, test being the string i want to send and it worked.

You need a CGI script on the rPi. When the user's web browser goes to that page (or is directed to it by pushing a button) then the CGI scirpt will run on the rPi which can pipe data out the serial port. Heres a random CGI tutorial if it helps, but you should look at the docs for whatever webserver your running (probably apache?)

Yes I am running an apache webserver.
And I forgot to write that i have tried creating a .sh file that has the echo command in it.
This is my .sh script i created:
#!/bin/sh
echo 1 > /dev/ttyAMA0
echo "Content-type: text/html"
echo ""
echo "<html><head><title>DzAnej Systems"
echo "</title></head><body>"
echo "<meta http-equiv=\"refresh\" content=\"0; url = http://192.168.1.3/dashboard.html\" />"
echo "</body></html>"
This script sends the 1 to the /dev/ttyAMA (Arduino)
and returns the user to the previous page...
The bottom part is working (return to the previous page) but the echo command is somehow not working...

Related

Unix mail command queues but does not send

I have created a service that is supposed to send an automated email in HTML format by using UNIX mail command. It was working correctly until yesterday when suddenly stopped sending mails.
This is the command Im running programmatically
cat ./email.txt | mail -v -s "$(echo -e "Report for Last Week
Content-Type: text/html
Reply-to: abraham#corp.com
From: abraham#corp.com")" abraham#corp.com manolo#corp.com
The output looks like:
abraham#corp.com... queued
manolo#corp.com... queued
I am not getting any email, neither my partner...
I am not even able to run
echo "test"|mail -s "This is a test" abraham#corp.com
Im running on RedHat Linux.
Just in case someone needs help. The issue was related to the sendmail service of the OS.
I had to go service sendmail restart
It was as simple as that, however, I did compare the configuration files against a clean machine to make sure they were similar.

How to send the output of a script by email with ksh

I have written a script that output pdf files and print some stuff on the console.
I am looking to be able to
send those files by email
as well as the output of the console.
I am using a linux redhat RHEL6 distro and ksh (I CAN'T use bash).
How can I do that ?
EDIT
The following is NOT working can you see why ??
#!/bin/bash
echo "coucou" > /tmp/mailmessage.txt
mutt -s "Test mail" -a /home/zo/Documents/scripts/test.txt me#gmail.com < /tmp/mailmessage.txt
Getting the following error
zo#Pavilion:~/Documents/scripts$ ./muttme.sh
Can't stat me#gmail.com: No such file or directory
me#gmail.com: unable to attach file.

How do I use the MOSS script?

I am trying to run MOSS on my Mac OS X and I don't know what mistake I am making. I am not sure whether I am running the command properly or not. I downloaded this file as 'moss', gave this execution permissions and tried to run following:
./moss -l python -c "Assignment 1" -d assignment1/
I got the response as
Checking files . . .
OK
Which is wrong. The assignment1 directory has 4 python scripts. Two files are exactly similar, in one I have rearranged the code and in another I have changed the variable names.
I have sent the email for registration and I have not received any reply. So I am running the code with default user ID.
I also tried running it with sending each of those python files instead of working on a directory, still I get same response.
./moss -l python -c "Assignment 1" 1.py 2.py 3.py 4.py
Steps to get going with MOSS on your Mac:
Send an email at moss#moss.stanford.edu with the mail body containing the email you want to register.
Eg:
registeruser
mail "username#domain" <-- your email
You will then get a reply containing the script that you will need to save as “moss.pl”. Just make sure that your Mac has the “perl” folder within the “/usr/bin/“ folder. Else, change the path of the perl folder on the very first line of the script to be compatible to your machine.
Now set the execute permission using the command “chmod ug+x moss.pl”. This should allow you to send your queries to the Stanford server. If you were to not execute this command then you may be denied the permission to submit any queries.
Now submit the query to the server using the command similar to the following (note the command is not restricted to a single flag (i.e. -l)….refer the comments in the script for USAGE instructions):
“./moss.pl -l python file_1.py file_2.py”
The result on submitting a query such as above would be:
Checking files . . .
OK
Uploading file_1.py ...done.
Uploading file_2.py ...done.
Query submitted. Waiting for the server's response.
http://moss.stanford.edu/results/282371307.
Just review if you have followed all the steps above. I, then, don't see you having any issues getting the results. Maybe you were facing issues bcoz you were not registered initially.
Seems one should be registered to use it, instructions weren't clear on the site. I received the email finally with userid and ran the script, this time it worked.
I think you should resend the email in the format:
registeruser
mail youremail
In the reply email you will get your ID, replace it in the script and run the moss file again. You should get the link for the result.

Email an alert when sFTP connection cannot be reached?

I have a very small office environment, and my team sends created pdfs to an sFTP server daily.
Occasionally, I will get a call that someone can't log in to upload the files.
My normal course of action is to connect to the sFTP server myself, run a commmand like ls to determine it is responding.
I would like to be able to automate this with notification if there is a failure:
Login to the sFTP server (with credentials).
Run an LS command
Email if connection times out or login fails.
I have limited experience with writing Batch files, but I can't seem to figure a way to get only a 'failed' / no response to send an email.
Could anyone help with ideas? I'd like to run this as a VB or Batch in Scheduled Tasks, as I have a Server 2000 machine this could run on. I know batch has issue sending emails, but i have another batch file that uses Blat.exe to send an email with passed variables, so i could use that if i could get batch to send failed responses...
You should be able to do this with a batch file.
Create a file called logon.ftp. This file contains the FTP logon script. Mine contains:
open Ftp_server
ftpuser
ftppassword
ls -l
quit
The testftp.bat file:
ftp.exe < logon.ftp | grep "Not connected" > nul && call :alert_someone
#echo Logon successful
goto exit
:alert_someone
#echo %date% %time% > alert.txt
#echo ftp_server appears to not be taking logins. >> alert.txt
blat alert.txt -to you -from ftp_watcher -subject "alert %date% %time% ftp_server not taking logins"
:exit
You'll need to get blat, and grep so you can do the string checking. My winxp ftp doesnt support errorlevels, so I'm using the errorlevel returned from grepping the 'Not connected' string to figure out if this worked or not.
You can get wget or curl to do this as well, and they do support errorlevels.
Batch files can be a bit too basic for this kind of thing.
If you were able and willing to experiment with the Python programming language ( http://www.python.org ) and additionally install the Paramiko module ( http://www.lag.net/paramiko/ ) then it would be possible to write a script along the lines of...
import paramiko
try:
t = paramiko.Transport(('TheHostname', 22))
t.connect(username='MyUsername', password='MyPassword')
sftp = paramiko.SFTPClient.from_transport(t)
dirlist = sftp.listdir('.')
except:
print "It's Broken"
#Send e-mails and such here
that you could then schedule to run on a regular basis.

CakePHP Shell Cron email error

I am using CakePHP 1.3 and I was able to successfully able setup the cron job to run shells using the example that was given in the CakePHP Book.
*/5 * * * * /full/path/to/cakeshell myshell myparam -cli /usr/bin -console /cakes/1.2.x.x/cake/console -app /full/path/to/app >> /path/to/log/file.log
This outputs the results into a log file but I want to receive email when there is an error so I can try to resolve the problem.
I tried the following with no luck.
If I remove the >> /path/to/log/file.log then even the successful run is emailed.
> /dev/null, my assumption was it would send a successful to /dev/null and error to email.
1> /dev/null, tried another variation of 2
Any help is appreciated.
Thanks
Huseyin,
This is not a CakePHP error then, and is maybe a question better suited for serverfault, as you would script your solution.
Bash's built-in facilities are up to the task, try The linux documentation project's neat introductory tutorials on shell scripting and #man bash.
Your solution basically has to use a temporary file or variable in which you store the output of the last cron job run. If there is an error:
cat THE_TMP_FILE | mail -s "Error from Server Huseyin's server" huseyin#fancy_domain.com
else:
cat THE_TMP_FILE >> blah.blah.log
Unfortunatly, you need a MTA available, in order to make the mail command. If you do not have access to the mail command, then you set another cron job following the first in time which then simply runs a if [ -e THE_FILE_CONTAINING_THE_LAST_ERROR]; then { echo $(cat THE_FILE_CONTAINING_THE_LAST_ERROR); rm -v THE_FILE... ;} ; fi
Of course this is not working code, but pretty close, so you'll get the idea.