Que tal:
echo {1..4} | xargs -n1 -I{} ssh root@www{}.example.com hostname
De man xargs
:
-n number
Set the maximum number of arguments taken from standard input for each invocation of utility.
No Linux, você pode usar xargs -d,
para executar rapidamente o comando hostname
em quatro servidores diferentes com nomes sequenciais da seguinte forma:
echo -n 1,2,3,4 |xargs -d, -I{} ssh root@www{}.example.com hostname
Parece que o comando xargs do OSX não suporta o parâmetro delimitador. Você consegue o mesmo resultado com um echo
formatado de maneira diferente ou por meio de algum outro utilitário de linha de comando?
Alternativamente, você sempre pode instalar o GNU xargs
através do Homebrew e do pacote GNU findutils
.
Instale o Homebrew:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Siga as instruções. Então instale findutils:
brew install findutils
Isso lhe dará GNU xargs
as gxargs
, e você pode usar a sintaxe a que você está acostumado a partir do GNU / Linux. O mesmo vale para outros comandos básicos encontrados no pacote findutils, como gfind
ou glocate
ou gupdatedb
, que têm diferentes contrapartes BSD no OS X.
Se você quer rodar em paralelo, use o GNU Parallel:
parallel ssh root@www{}.example.com hostname ::: {1..4}