Calling Shell command

In order to rule out privileges issues from within HG have you tried using sudo /home/pi/share/sendrf.sh

@roberto1979 your issue may e you haven’t made your sh file executable. If it isn’t ececutable it wont run

I think he’s already stated that he has it running from the command line in the OP.

Thanks for your answers. Unfortunately I have already tried all these things. I made the executable file, granted privileges to the file, to the directory, and much more…
This is why I was wondering if perhaps you are able to send commands in other ways, for example via phyton script.

P.S.I use this bash file, to launch an RF command using a Phyton script of rpi-rf. The strange thing, of which I don’t know the reason, (but maybe could help you to understand the problem), is that if I add sudo to the sendrf.sh from the shell, I get an error. So, i can lunch the program simple with the command “sendrf.sh”, but not with the command “sudo sendrf.sh”.

Did you set the privileges and permissions correctly when using the chmod command to create your executable script. Type ls -l sendrf.sh at the command line and paste the output

Did you add a shebang as the first line of your script like this

#! /bin/bash

and set the executable rights like this

sudo chmod +x sendrf.sh

1 Like

Currently the file permissions are root root … I had also tried with Pi … all user…

[email protected]:/ $ ls -l sendrf.sh
-rwxr-xr-x 1 root root 63 nov 10 02:01 sendrf.sh

Could you post your sendrf.sh script

#! /bin/bash
cd /
/usr/bin/python3 /usr/local/bin/homegenie/send.py 000000

What version of Python are you using. If I recall HG only supported Python 2.x yet you are using a Python 3.x script

What does python —version report

Homegenie uses python2 … But by running the script from Shell I use python3 and all work fine. (rpi-rf call a python3).
Recalling the file from Shell, it should not affect the Pyhthon version of HG, is that correct? (In fact from Shell the Bash file is executed correctly).

and… The system default Python version is 2.7… but the script calls python3 for the execution of the preogram.

Please, also consider that the script works without any problems even from the raspbian crontab…For this reason I was wondering if perhaps you are able to call the script from homegenie via other ways…

What exactly is the purpose of your Python program. What does it do and why did you create it in Python 3.

Mixing Python versions is not something I’ve ever needed to do but this might give you an insight into how it can be done. https://stackoverflow.com/questions/27863832/calling-python-2-script-from-python-3

I’m assuming you created your bin bash script correctly, made it executable properly and had the absolute path correctly defined.

As you say it runs fine from the cli so I imagine your problem is either path related or there’s a problem between Python versions.

Ok I remember seeing a problem similar to yours in the old forum. Read through this as it may contain a solution for you. It explains why you can run as a user from the command line but not as sudo http://old.homegenie.club:8080/www.homegenie.it/forum/index377e.html?topic=352.0

1 Like

Thank you very much Tuiceman and Pretediscrete, because with your help I finally managed to send the Shell command via HG.

I don’t know why, but after so many tests this is the complete script that works:

var proc = new System.Diagnostics.Process {
StartInfo = new System.Diagnostics.ProcessStartInfo {
FileName = “/bin/bash”,
Arguments = "-c “sudo -H -u pi " + “”/usr/local/sendrf.sh”,
UseShellExecute = false,
RedirectStandardOutput = true,
}
};
proc.Start();
Program.Notify("xxx: ", “xxx”);

Yes because as I originally mentioned you were trying to run the script without the use of sudo. You can see the difference in the last link I sent you from the old HomeGenie forum. Compare the two and you’ll see the difference.

This line made all the difference

FileName = “sudo -H -u pi bash”,

Compare that to your original script and you’ll know why it ran successfully

I suggest that you tidy up the post so others searching for a solution to the same problem will find it easily. Probably best to make a new post with your findings.