Actualmente he desarrollado un script de automatización que se encarga de recibir un archivo de texto para lectura y luego debe conectarse a un equipo Fortinet por SSH, estando en mi servidor (redhat) sobre la ruta:
Using bash Syntax Highlighting
- /usr/local/scripts/apply_healthy_internet.pl 2 URLFILTER2###inet_sano_parsed_20170309.txt
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4
Ejecuto ese script y hace el trabajo sin inconvenientes, todo es una maravilla El problema se presenta cuando se ejecuta desde la página web que está alojada en el mismo servidor, como lo ilustro a continuación:
Esta página ejecuta un comando desde PHP:
Using php Syntax Highlighting
- $filetemp = "/usr/local/scripts/logs/apply_healthy_internet.log";
- $command = "perl ./apply_healthy_internet.pl $numberList \"" .$nameList. "###" . $filename . "\" > $filetemp
- //$command = "cd /usr/local/scripts/ && perl ./apply_healthy_internet.pl $numberList \"" .$nameList. "###" . $filename . "\" > $filetemp 2>&1";
- system($command);
Coloreado en 0.021 segundos, usando GeSHi 1.0.8.4
Como lo indiqué antes, tomando el comando que me retorna la web, y ejecutándolo desde la consola del servidor, el script funciona, pero validando el log que es generado por la ejecución vía web obtengo esta respuesta:
Using bash Syntax Highlighting
- [root@server mysite]# cat /usr/local/scripts/logs/apply_healthy_internet.log
- total: 40300
- imposible conectar con servidor remoto 190.2.23.13: unable to establish master SSH connection: the authenticity of the target host can't be established, the remote host public key is probably not present on the '~/.ssh/known_hosts' file at ./apply_healthy_internet.pl line 131, <$fh> line 4000.
- done
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
He logrado cambiar el script para que me retornara ese error y esta es la función donde se encuentra la línea en cuestión:
Using perl Syntax Highlighting
- sub conectar_openssh{
- ## ---------------------------------------------------------------
- ## Inicializacion de variables
- ## ---------------------------------------------------------------
- my $ip = $_[0];
- my ($stderr) = ('');
- #Aqui es donde se presenta el error en mi script
- $ssh = Net::OpenSSH->new($ip, user => $userdefault, passwd => $passdefault, port => 22, master_opts => [-o => "UserKnownHostsFile=~/.ssh/known_hosts"]);
- if ($ssh->error) {
- $stderr= $ssh->error;
- warn "imposible conectar con servidor remoto $ip: ". $ssh->error;
- return $stderr, $ssh;
- }
- $stderr=$ssh->error;
- return $stderr, $ssh;
- }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Sin embargo, el problema inicial era que no encontraba el directorio
Using bash Syntax Highlighting
- /var/www/.libnet-openssh-perl/
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Espero que me puedan ayudar. He estado mirando en la web y a muchos les sucede lo mismo pero no han recibido una respuesta a este problema. Muchas gracias de antemano.