execute a linux echo command (.sh) in Php - php

I created a .sh file in my linux and want to run it from webpage (php + Apache).
Some of the simple example execute without problem. But I can't run with echo Pipe:
#!/bin/sh
set +v
cp /tmp/test/test1.tar.gz.gpg /tmp/test/ts2.gpg
echo 'myPassword' | /usr/bin/gpg --passphrase-fd 0 --output /tmp/test/test1.tar.gz --decrypt /var/backups/test1.tar.gz.gpg
exit 0
It can copy ts2.gpg but can't run the second command (decrypt).

You want shell_exec.
<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>
Enjoy

Related

Mount remote file system using sshfs with a PHP script

I want my PHP script can mont a remote system with sshfs command.
But it doesn't seem to work, the folder has been created but the folder still empty after execution. I also tried with a user without SU and it was working fine.
mkdir ("/var/mont/remote/");
$cmd = "sshfs -o password_stdin -o allow_other enzo#192.168.0.29:/home/enzo/remote/ /var/mont/remote/ <<< 'MyRemotePassword'";
$output = nl2br(shell_exec($cmd));
echo $output;
This script (test.sh) should work :
#!/usr/bin/env bash
php -r 'mkdir ("/var/mont/remote");
$cmd = "sshfs -o password_stdin -o allow_other enzo#192.168.0.29:/home/enzo/remote/ /var/mont/remote/ <<< 'MyRemotePassword'";
$output = nl2br(shell_exec($cmd));
echo $output;'
Run it as bash test.sh

Launch python file from PHP on LINUX server

I tried many solutions but nothing it works :
echo '<pre>';
shell_exec("python /home/folder/python/mapfile_compress.py");
shell_exec("sudo -u wwwexec python escapeshellcommand(/home/folder/python/mapfile_compress.py) $uid");
shell_exec("sudo chmod +x /home/folder/python/mapfile_compress.py");
system("bash /home/folder/python/mapfile_compress.py");
passthru("bash /home/folder/python/mapfile_compress.py");
passthru("/home/folder/python/mapfile_compress.py");
exec("bash /home/folder/python/mapfile_compress.py");
echo '</pre>';
I launched indivdually them but in all cases, Firebug returned : '<pre>'
So I tried this code founded on Stack Overflow :
$command = escapeshellcmd('chmod +x /home/folder/python/mapfile_compress_test.py');
echo $command;
$output = shell_exec($command);
echo $output;
But firebug returned nothing.
My python file begin with #!/usr/bin/env python and if I launch it on server that works !
Do you knwo how can I launch my python file from PHP file ?
chmod will return 0 on success and > 0 on error.
Make sure that the file is able to run by just executing it as the web user. When +x is properly set, you can execute it by just calling $ /path/to/your/file.py, the shebang in the first line in your script #!/usr/bin/env python should define the correct python based on your env.
You can test this by running:
$ /usr/bin/env python /path/to/your/file.py
So check your file permissions to check if the file is executable by the user that runs the php script.
Just to test, you can just print a few lines in your python file
#!/usr/bin/env python
print "test line 1"
print "test line 2"
Then if you have verified permissions and the correct use of python, you can do this in your php.
$command = escapeshellcmd('/path/to/your/file.py');
$output = shell_exec($command); // get all output or use passthrough, exec will only return the last line.
echo "<pre>{$output}</pre>;
At first, Do you have enabled shell_exec/system/passthru commands in php.ini?
shell_exec("python /home/folder/python/mapfile_compress.py");
I think, it could be problem with your $PATH. Try something like: (use full path to python)
shell_exec("/usr/bin/python /home/folder/python/mapfile_compress.py");
shell_exec("/usr/local/bin/python /home/folder/python/mapfile_compress.py");
In my case that's work if I write this code :
$command = escapeshellcmd('python /path/to/your/file.py');
exec($command);

shell_exec not executing sh file for inkscape command

one.sh
#! bin/bash
command="cp 357.svg 000.svg"
echo "Executing Command";
exec $command;
from shell by executing sh one.sh runs perfact and even in php shell_exec("sh one.sh"); works fine.
two.sh
#! bin/bash
command="/usr/bin/inkscape -f 357.svg -e 357.png"
echo "Executing Command";
exec $command;
From shell sh two.sh works fine
but using php shell_exec("sh two.sh") not executing
can any one please tell why it is not executing?
try :
echo shell_exec("sh two.sh 2>&1;")
and see what the output is, maybe it will give you a permission denied error.
Maybe also worth checking which user you are running with (probably something like www-data)

running shell command from php with sudo

I want to run this code from php
echo <password> | sudo -S /usr/sbin/asterisk -rx "dongle show devices"
but it's not working. Can anyone help?
You can just use the 'backtick' character (`) around your shell string like:
<?php
$output = `command_goes_here`;
echo $output;
?>
Keep in mind this will only work if the shell_exec() function would work on that server, which could also be used in a similar way.
Use php function shell_exec or exec to execute shell commands
For more details
http://www.php.net/shell_exec
http://php.net/manual/en/function.exec.php
u can try by this if u want to run shell script command in php file
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
u can also try other way by create .sh file for shell script and run that .sh file by php function
$output = shell_exec('./deploy.sh');
echo "<pre>".$output."</pre>";

exec() command from web server in php

Is there anyway to use atrm command to remove queue job from PHP web application?
I wrote a shell script to remove the queue job but it doesn't work well.
#! /bin/sh
export PATH=/usr/local/bin:$PATH
echo atrm 3700 2>&1
You can try doing:
echo exec('export PATH=/usr/local/bin:$PATH ; atrm 3700 2>&1');
Try atrm 3700 2 > &1 without echo
You can use shell_exec or exec PHP function :
$output=shell_exec($commandstring);
print_r($output);
or
exec($commandstring,$output,$returnval);
print_r($output);
print_r($returnval);

Categories