Eu quero executar um script Perl CGI ( a_web_page.cgi
) da minha dev box .1.20
que executa um script bash da mesma pasta ( host_script.sh
).
Este script então executa um comando SSH para outro servidor 1.10
que executa um script que simplesmente retorna uma string.
Executar o script manualmente ( ./host_script.sh
) funciona desde que eu faça me
o proprietário das chaves. (As chaves são armazenadas na mesma pasta que os scripts, para teste).
Por padrão, o proprietário das chaves é apache
.
A questão é que, mesmo com apache
possuindo essas chaves, ainda não funciona. Eu expliquei abaixo.
Estes comandos estão sendo executados a partir de uma vm em 192.168.1.20
. (dev box) Entrei nesta VM via ssh da minha caixa local em 192.168.1.50
-
192.168.1.10
Máquina de destino com script1.sh
. Este script retorna uma string.
-
192.168.1.20
Servidor que executa o servidor da web do apache e tem a_web_page.cgi
e host_script.sh
. (Eu estou executando esses comandos nesta caixa.)
-
192.168.1.50
Minha máquina local, não deveria realmente levar em consideração, mas coloque aqui apenas no caso de isso ajudar.
De 192.168.1.20
:
ls -a -l
-rwxrwxrwx. 1 me apache 622 Apr 12 09:19 a_web_page.cgi
-rwxrwxrwx. 1 me apache 111 Apr 11 15:14 host_script.sh
-rwx------. 1 apache apache 1675 Apr 11 15:11 test
-rwx------. 1 apache apache 392 Apr 11 15:11 test.pub
vim host_script.sh
#!/bin/bash
ssh -i /var/www/html/dev/remote_script/test [email protected] "/home/user/scripts/script1.sh"
a_web_page.cgi
#!/usr/bin/perl
use strict;
use warnings;
print "Content-type: text/html\n\n";
my $executeString = './host_script.sh';
my $output = '$executeString';
print "<br />$executeString<br />: $output<br />";
Saída ( link ):
./host_script.sh
:
sudo tail -f / var / log / httpd / error_log
[Tue Apr 12 10:05:22 2016] [error] [client 192.168.1.50] ssh: connect to host 192.168.1.10 port 22: Permission denied\r
(Estou confuso porque o IP do cliente é minha caixa local e não a caixa dev)
ifconfig
inet addr:192.168.1.20
(Se eu executar o ifconfig na minha caixa local saindo da minha sessão SSH, eu receberei 192.168.1.50
.)
Nesta fase, posso ver que o SSH para 192.168.1.10
está falhando, então vamos dar-me permissões para executar o host_script.sh
diretamente e executá-lo.
sudo me manda testar
Isso funciona.
./ host_script.sh
This is a script on the 192.168.1.10 server!
(Esta string é retornada de script1.sh
on 1.10
, é apenas uma instrução echo)
Então, executar o script como eu funciona bem, desde que eu tenha permissões para ler as chaves.
-rwx------. 1 me apache 1675 Apr 11 15:11 test
-rwx------. 1 me apache 392 Apr 11 15:11 test.pub