Foro de elhacker.net

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: ccrunch en 19 Noviembre 2014, 20:44 pm



Título: Problemas al ejecutar .php con ampersand en cron?
Publicado por: ccrunch en 19 Noviembre 2014, 20:44 pm
Hola a todos. Tengo que ejecutar unos ficheros php en cron, en centos. Esos ficheros llevan ampersands (&) y cuando se envía por mail el reporte, dice que  no se encuentra la ruta, y la ruta que me llega al correo se corta justo donde empieza el ampersand.

Alguien me puede ayudar?

Salu2


Título: Re: Problemas al ejecutar .php con ampersand en cron?
Publicado por: MinusFour en 19 Noviembre 2014, 20:55 pm
Pega tu crontab.


Título: Re: Problemas al ejecutar .php con ampersand en cron?
Publicado por: ccrunch en 19 Noviembre 2014, 21:12 pm
Pega tu crontab.
##      *       *       *       *       0-7     lynx -dump 'Can't Access `file://localhost/var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=155&action=check'

##      *       *       *       *       0-7     php /var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=155&action=check >> /root/pruebadoc.txt

ninguno de los dos funciona, el primer comando del cron me dice:
Código:
Can't Access `file://localhostCan't Access `file://localhost//var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=155&action=check'
Alert!: Unable to access document.

lynx: Can't access startfile '

El segundo error dice:
Código:
Could not open input file: /var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=155

Lo que quiero es ejecutar ese script.

Salu2


Título: Re: Problemas al ejecutar .php con ampersand en cron?
Publicado por: MinusFour en 19 Noviembre 2014, 21:53 pm
##      *       *       *       *       0-7     lynx -dump 'Can't Access `file://localhost/var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=155&action=check'

##      *       *       *       *       0-7     php /var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=155&action=check >> /root/pruebadoc.txt

ninguno de los dos funciona, el primer comando del cron me dice:
Código:
Can't Access `file://localhostCan't Access `file://localhost//var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=155&action=check'
Alert!: Unable to access document.

lynx: Can't access startfile '

El segundo error dice:
Código:
Could not open input file: /var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=155

Lo que quiero es ejecutar ese script.

Salu2

Esto no es ningun problema de cron. Le estas pasando a Linx:

Código
  1. 'Can't Access `file://localhost/var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=155&action=check'

Esto no es un path ni una url. Primero porque está el texto ese de "Can't Access" y segundo porque file:// no hace referencia a un archivo tampoco, hace referencia a una URL.

No existe el archivo cron.php?bot=155&action=check. Existe el archivo cron.php, lo demas es un query string que pertenece a una URL.

Necesitas ejecutar lynx? No puedes hacerlo con curl?

El de php sufre de lo mismo. No existe un archivo cron.php?bot=15.

Código
  1. curl http://localhost/script/cron.php?bot=15 >> /path/to/file.txt


Título: Re: Problemas al ejecutar .php con ampersand en cron?
Publicado por: ccrunch en 20 Noviembre 2014, 11:29 am
Hola, he probado con esto:
Código:
curl http://localhost/var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=150&action=check >> /root/pruebacurl.txt
Pero me dice:
Código:
curl: (7) couldn't connect to host

Citar
No existe el archivo cron.php?bot=155&action=check. Existe el archivo cron.php, lo demas es un query string que pertenece a una URL.
Te refieres a que no puedo poner la consulta en el mismo url?

Salu2


Título: Re: Problemas al ejecutar .php con ampersand en cron?
Publicado por: #!drvy en 20 Noviembre 2014, 12:11 pm
Citar
url: (7) couldn't connect to host

¿ Tienes apache (o algún servidor http) corriendo ?



Tienes que diferenciar entre url y path. La url puede incluir parámetros que el servidor HTTP transforma y envía a el interprete.. la path solo  puede contener la ruta original del archivo y los parámetros se envían de otra forma.

Si no quieres tener que correr un servidor http solo para hacer el cron tendrías que modificar un  poco el script.

Código
  1. if(php_sapi_name()==='cli'){
  2.   $params = getopt(null,array('bot:','action:'));
  3.   $_GET['bot'] = $params['bot'];
  4.   $_GET['action'] = $params['action'];
  5.   unset($params);
  6. }
  7.  
  8. print_r($_GET);

Código
  1. php /var/www/cron.php --bot 150 --action check >> /root/pruebacurl.txt

Código
  1. Array
  2. (
  3.    [bot] => 150
  4.    [action] => check
  5. )
  6.  

Saludos


Título: Re: Problemas al ejecutar .php con ampersand en cron?
Publicado por: daryo en 20 Noviembre 2014, 13:37 pm
edito
. todo lo que habia escrito lo habia puesto dvry antes

edito2
si tienes un servidor ejecutándose
en ves de:
Código
  1. curl http://localhost/var/www/vhosts/midominio.es/httpdocs/cron/cron.php?bot=150&action=check >> /root/pruebacurl.txt

prueba con:
Código
  1. curl http://tudominio.es/cron/cron.php?bot=150&action=check >> /root/pruebacurl.txt


Título: Re: Problemas al ejecutar .php con ampersand en cron?
Publicado por: MinusFour en 20 Noviembre 2014, 14:18 pm
Yo diria que estas haciendo una mezcla de url y path otra vez.

Me atreveria a decir que el directorio principal de tu servidor web es:

Código
  1. /var/www/vhosts/midominio.es/httpdocs/

Entonces deberías poder hacer la consulta a:

Código
  1. http://www.midominio.es/cron/cron.php?bot=150&action=check >> /path/to/file.txt

Depende tambien de tu configuración de tu vhost. (Si permite desde localhost, etc).


Título: Re: Problemas al ejecutar .php con ampersand en cron?
Publicado por: ccrunch en 20 Noviembre 2014, 15:03 pm
Hola, al final lo hice de otra manera porque era mas o menos urgente, pero gracias a todos por la ayuda (y a Dantemc que fue quien me ayudó en la solución final).

gracias de nuevo!