.sh no PHP

1. .sh no PHP

Alex Vieira
alexxxx

(usa Fedora)

Enviado em 29/08/2014 - 12:45h

Ola

Estou com uma baita dor de cabeça tenho que rodar um script .sh e quero integrano lo php ou algo para poder gerencialo o que posso fazer ?


  


2. SH

Alex Vieira
alexxxx

(usa Fedora)

Enviado em 29/08/2014 - 13:15h

E apenas um sh basico para cirar pastas , quero rodar ele via web ou em php ou wm html qual quer coisa

o que posso fazer ?


3. php

CASSIO FERRAZ
cassio88

(usa Ubuntu)

Enviado em 30/08/2014 - 05:30h

não entendi bem o problema, em todo caso vou tentar:

<?php
(...)
shell_exec('sudo /local/exato/do/seu/arquivo.sh');
(...)
?>
Caso não consiga edite o arquivo /etc/sudoers e comente a linha que tem "Defaults requiretty"
O arquivo sh tem permissão de execução? Faça:
chmod +x arquivo.sh
Se o arquivo sh estiver na mesma pasta do php, deveria ser chamado apenas, por exemplo, new_db.sh e não operations/new_db.sh



4. Re: .sh no PHP

Alex Vieira
alexxxx

(usa Fedora)

Enviado em 30/08/2014 - 08:23h

Bom vou ver mais sucinto estou rodando rodar um .sh via php a função dele e simplesmente gerar uma pasta o código esta logo abaixo

---- teste.sh ---

#!/usr/bin/php -q

mkdir /var/www/html/sim

--------

O arquivo já esta com permissão chmod +x e esta locado na mesma pasta /var/www/html/teste.sh


Ja o PHP ele esta locando na mesma pasta /var/www/html/teste.php do meu arquivo .sh e codiogo logo abaixo.


--- PHP ---

?php
(...)
shell_exec('sudo teste.sh');
(...)
?>


---



porem a pasta na e criada ??


5. php

CASSIO FERRAZ
cassio88

(usa Ubuntu)

Enviado em 30/08/2014 - 09:44h

posta o que está no error.log (no ubuntu, em var/log/apache2)
se for
sudo: no tty present and no askpass program specified
então mude seu código php para
echo exec('whoami');
deve retornar www-data
adicione este usuário a /etc/sudoers
abra o terminal e dê o comando
sudo visudo -f /etc/sudoers
então após
includedir /etc/sudoers.d user_name ALL=(ALL)
adicione
www-data ALL=(ALL) NOPASSWD: ALL
grave e saia (no ubuntu, control O)
ou seja, você estará adicionando o usuário www-data a sudoers
então, rode o seu código original.
Se eu estiver certo, vai dar outro erro, mas aí vai ser mais fácil resolver, então poste o novo erro que aparece no error.log



6. Re: .sh no PHP

Alex Vieira
alexxxx

(usa Fedora)

Enviado em 12/09/2014 - 10:28h

cassio88 escreveu:

posta o que está no error.log (no ubuntu, em var/log/apache2)
se for
sudo: no tty present and no askpass program specified
então mude seu código php para
echo exec('whoami');
deve retornar www-data
adicione este usuário a /etc/sudoers
abra o terminal e dê o comando
sudo visudo -f /etc/sudoers
então após
includedir /etc/sudoers.d user_name ALL=(ALL)
adicione
www-data ALL=(ALL) NOPASSWD: ALL
grave e saia (no ubuntu, control O)
ou seja, você estará adicionando o usuário www-data a sudoers
então, rode o seu código original.
Se eu estiver certo, vai dar outro erro, mas aí vai ser mais fácil resolver, então poste o novo erro que aparece no error.log


Obrigado

Bom vou ser mais direto , eu tenho que rodar um .sh a cada 15 dias em todas as filias da minha empresa , porem sao 22 filias ! e eu gostaria de um modo de gerencias a aplicação desse meus scrits em .sh

Uma ideia e rodas eles em PHP onde eu possa criar uma janela mais amigável e posso administrá-lo com mais facilidade, esse scrit apena baixa uns arquivos citatos na internet e joga para as pastas corretas.


Legal como eu posso administra esses meus scrits ?? o PHP e a melhor resposta ?






7. .sh no php

CASSIO FERRAZ
cassio88

(usa Ubuntu)

Enviado em 23/09/2014 - 15:18h

se a sua necessidade for fazer ftp de arquivos e gravá-los, dá para fazer via php, só não sei se é a melhor opção.

1) o arquivo abaixo faz ftp ...

<html>
<head>
<title>Mirror update</title>
</head>
<body>
<h1>Mirror update</h1>
<?php
// set up variables - change these to suit application
$host = 'ftp.cs.rmit.edu.au';
$user = 'anonymous';
$password = 'laura@tangledweb.com.au';
$remotefile = '/pub/tsg/teraterm/ttssh14.zip';
$localfile = '/tmp/writable/ttssh14.zip';

// connect to host
$conn = ftp_connect("$host");
if (!$conn)
{
echo 'Error: Could not connect to ftp server<br />';
exit;
}
echo "Connected to $host.<br />";

// log in to host
@ $result = ftp_login($conn, $user, $pass);
if (!$result)
{
echo "Error: Could not log on as $user<br />";
ftp_quit($conn);
exit;
}
echo "Logged in as $user<br />";

// check file times to see if an update is required
echo 'Checking file time...<br />';
if (file_exists($localfile))
{
$localtime = filemtime($localfile);
echo 'Local file last updated ';
echo date('G:i j-M-Y', $localtime);
echo '<br />';
}
else
$localtime=0;
$remotetime = ftp_mdtm($conn, $remotefile);
if (!($remotetime >= 0))
{
// This doesn't mean the file's not there, server may not support mod time
echo 'Can\'t access remote file time.<br />';
$remotetime=$localtime+1; // make sure of an update
}
else
{
echo 'Remote file last updated ';
echo date('G:i j-M-Y', $remotetime);
echo '<br />';
}
if (!($remotetime > $localtime))
{
echo 'Local copy is up to date.<br />';
exit;
}

// download file
echo 'Getting file from server...<br />';
$fp = fopen ($localfile, 'w');
if (!$success = ftp_fget($conn, $fp, $remotefile, FTP_BINARY))
{
echo 'Error: Could not download file';
ftp_quit($conn);
exit;
}
fclose($fp);
echo 'File downloaded successfully';

// close connection to host
ftp_quit($conn);

?>
</body>
</html>

2) ... e os comandos fwrite() e fclose() podem ser usados para gravar o arquivo localmente.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts