É possível executar um programa através do prompt do FTP?

6

Sou relativamente novo no Unix ou shell script (um novato total para falar a verdade), eis o seguinte: tenho um software de BI que roda em um servidor UNIX remoto. Através do cliente SAS no Windows eu executo alguma analítica e crio alguns arquivos simples que precisam ser automaticamente enviados para esse servidor UNIX, isso não é problema através do comando SAS X para executar comandos Unix no rsubmit, eu carrego os arquivos através do prompt do FTP no entanto eu quero usar um comando "sh" quando eu logar no servidor ftp

ftp -nv << -EOF > /AutomatedReports/Flatfiles/log/sendInv.log
open biserver.myserver.com
user biuser pass1234
prompt
lcd  /container/AutomatedReports/KPI_Flatfiles/
cd  /container/AutomatedReports/apps/flatfiles
put kpi_new_inv.txt
put instock_trend.txt
quit

O código acima é enviado para o UNIX, no entanto, quando eu incluo

sh edastart -x "EX test"

eu recebo um erro, só quero saber se estou fazendo algo errado para poder procurar outra maneira de fazer isso. Qualquer ajuda, orientação ou resposta será muito apreciada.

    
por isJustMe 27.10.2011 / 15:51

6 respostas

3

Não, você não pode iniciar um programa em um servidor Unix distante usando o protocolo FTP (a menos que você use algumas extensões bizarras dele).

Por que você não pode usar o ssh, isto é, copiar o arquivo para o distante servidor Unix usando o scp e, em seguida, efetuar o login nesse servidor usando o ssh.

    
por 27.10.2011 / 15:56
1

Se você pudesse executar comandos arbitrários, isso seria uma bruta violação de segurança no servidor FTP. FTP é um método de transferência de arquivos apenas; para execução remota, vá para SSH.

    
por 27.10.2011 / 15:55
1

Faça mais de casca com massa, como os outros disseram. Se você precisar automatizar o processo, por que não configurar uma tarefa cron e / ou um arquivo acionador?

    
por 27.10.2011 / 18:53
1

Eu faço exatamente isso para executar uma consulta Hive em um host linux remoto e ter os resultados redirecionados para o meu programa SAS. Se não houver saída de seu código SAS, ainda é uma boa idéia coletar qualquer saída de STD, pois você pode executar uma verificação para garantir que tudo correu bem.

filename hive pipe 'C:\Progra~1\ICW\bin\ssh.exe server.name.local -l username -i c:\id_rsa " ls "' lrecl=80;

data x ;
  length line $80.;
  infile hive truncover;
  input @1 line $80.;
run;

O executável de terceiros que usei pode ser encontrado aqui:

link

Gerei uma chave RSA para não precisar fornecer minhas credenciais completas em cada login, mas tenho certeza de que você conseguirá descobrir isso ou apenas fornecer uma senha de nome de usuário comum como parâmetros ...

Observe que você também pode executar o comando remoto acima usando o comando SAS 'X' se não quiser enviar nenhum resultado de volta.

Boa sorte R

    
por 31.10.2011 / 23:56
1

Veja como usar o TCL / Expect. O módulo Expect to TCL se destaca na automação de comandos do console, incluindo manipulação de prompts de login e senhas e comandos ftp. Com um script Expect, você pode automatizar uma sessão completa de login no ftp. Qualquer coisa que você possa fazer manualmente, você pode fazer via Expect. Você basicamente diz ao shell qual comando executar e qual prompt ou resposta deve ser "esperado". O que você espera pode ser especificado como um valor codificado ou como uma expressão regular. Um exemplo do uso do Expect é fazer um script de um teste automatizado para fazer login em um roteador Cisco (ID do usuário / senha), configurar o roteador, executar alguns testes, verificar os resultados e, em seguida, sair do roteador.

    
por 04.11.2011 / 05:05
0

Se você já estiver familiarizado com o PuTTY, use o Plink, do mesmo desenvolvedor. Suporta execução remota de comandos via SSH e pode ser usado em scripts automatizados.

    
por 06.04.2015 / 01:39

Tags