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] ls
Em seguida, seu arquivo de entrada é um script de shell, apenas execute-o com
sh myscript
ou torne-o executável e coloque#!/bin/sh
no 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 .