Para loop para portas em vários servidores remotos no Linux

1

Meu programa precisa ser executado em vários servidores remotos com diferentes portas no script, aqui está um exemplo:

No servidor 1, precisa ser executado:

java -jar test.jar 9001 **.**.**.** 9001
java -jar test.jar 9001 **.**.**.** 9002
java -jar test.jar 9001 **.**.**.** 9003
              .
              .
              .
java -jar test.jar 9001 **.**.**.** 9020

No servidor 2, precisa ser executado:

java -jar test.jar 9001 **.**.**.** 9021
java -jar test.jar 9001 **.**.**.** 9022
java -jar test.jar 9001 **.**.**.** 9023
              .
              .
              .
java -jar test.jar 9001 **.**.**.** 9035

...

Então, para criar o script mais conveniente, como usar um loop for em cada script de servidor para executar vários comandos?

    
por Andi 26.12.2016 / 05:56

1 resposta

2

servidor 1:

for i in $(seq -f "%03g" 1 20)
do
  java -jar test.jar 9001 **.**.**.** 9${i}
done

servidor 2:

for i in $(seq -f "%03g" 21 35)
do
  java -jar test.jar 9001 **.**.**.** 9${i}
done

enquanto

seq -f <format> <first> <last>

usa uma string de formato de estilo printf . O formato deve ser adequado para imprimir um argumento do tipo double . Pode conter uma especificação de conversão que consiste em:

  • % : introduz a especificação de conversão
  • 0 : O valor convertido é preenchido à esquerda com zeros em vez de brancos (opcional)
  • 3 : string de dígito decimal (com primeiro dígito diferente de zero) especificando uma largura mínima de campo (opcional)
  • g : Imprimir argumento do tipo double em ponto flutuante ou notação exponencial. Os zeros à direita são removidos da parte fracionária do resultado; um ponto decimal aparece apenas se for seguido por pelo menos um dígito. (Isso nos permite imprimir um double que se parece com um integer )

Para mais detalhes, consulte:

man seq
man 3 printf
    
por 26.12.2016 / 10:07