Como posso imprimir um intervalo de endereços IP na linha de comando linux usando o comando "seq"? Por exemplo: eu preciso do seq para imprimir um intervalo de ip de 10.0.0.1 a 10.0.0.23. Parece que o período entre os octetos faz com que o número se comporte como um ponto flutuante. Estou recebendo um "erro de argumento de ponto flutuante inválido". Eu tentei usar a opção -f. Pode ser que eu não esteja usando corretamente. Mas ainda assim me deu um erro. Estou tentando algo parecido com
seq 10.0.0.2 10.0.0.23
Existe outra maneira de imprimir endereços IP em um intervalo no Linux que não seja a mudança para o Excel?
linux
bash
command-line
user2476714
fonte
fonte
bash
, esse intervalo de endereços pode ser impresso comecho 10.0.0.{2..23}
. A{..}
construção é chamada de expansão entre chaves.Respostas:
Use um formato:
Infelizmente, isso não é óbvio, pois o GNU não gosta de escrever páginas de manual.
fonte
info coreutils 'seq invocation'
.%g
também não está documentado; você precisa procurar aprintf
página de informações correta .man 3 printf
também é uma boa idéia, caso o leitor não esteja familiarizado com as seqüências de caracteres de formato printf. Dito isto, também não sou muito fã do uso do texinfo, mas essa foi apenas minha sugestão para melhorar sua resposta, fazendo uso da documentação que existe, apenas apontando a falta de documentação em um formato específico.Existe o
prips
utilitário que gera uma lista de IPs de um intervalo ou CIDR. Útil para trabalhos com grandes faixas:fonte
Você pode usar o comando sed com seq para imprimir o intervalo de endereços IP.
OU usando eco e tr
fonte
O
printf
comando executa iteração implícita se receber mais argumentos do que especificadores de conversão. Por exemplo:Há duas conversões, mas seis argumentos. Então, ocorrem três repetições da lógica de formatação, marcando sobre os argumentos em pares.
Com isso, podemos fazer:
O
printf
comando e seu comportamento repetitivo são o padrão POSIX : "O operando formatado deve ser reutilizado quantas vezes for necessário para satisfazer os operandos do argumento". Por outro lado, oseq
comando não é.fonte
fonte
Se removermos o requisito de usar o
seq
comando e presumirmos que oipcalc
comando está disponível e oprips
comando Ubuntu não, entãoprips
pode ser implementado como uma função do shell Bash:Observe que isso incluirá o endereço de rede e o endereço de broadcast no intervalo; se isso for um problema, exclua o primeiro e o último endereço do resultado.
fonte