Você está executando o comando ssh [email protected] , que lê os comandos da entrada padrão e os executa em server1.com . A entrada padrão está conectada ao seu arquivo de entrada, portanto, em server1.com , você está executando o comando ssh [email protected] .
Se você quiser executar o comando ls , você precisará trabalhar ls em seu código de alguma forma. Existem duas opções sãs:
-
Se você deseja executar comandos arbitrários, coloque todos os comandos em seu arquivo de entrada:
ssh [email protected] ls ssh [email protected] lsEm seguida, seu arquivo de entrada é um script de shell, apenas execute-o com
sh myscriptou torne-o executável e coloque#!/bin/shno topo. -
Se você deseja executar o mesmo comando em várias máquinas, faça com que seu arquivo de entrada contenha apenas os nomes das máquinas, ou seja,
[email protected] [email protected]Em seguida, leia os nomes das máquinas e execute o comando em cada um deles:
while read target comment; do ssh "$target" ls </dev/null done <"$1"O redirecionamento de
/dev/nullé para o caso de o comando remoto tentar ler a entrada padrão, para evitar a leitura do arquivo com a lista de nomes de máquinas. O arquivo de lista pode conter outras palavras em cada linha após o nome do servidor; eles serão colocados na variávelcomment. Adquira o hábito de putting aspas duplas em torno de substituições de variáveis .Você pode ser mais bem servido por frameworks para executar o mesmo comando em várias máquinas .