Como canalizar ip?

2

Eu reúno todo o meu ip local usando arp-scan , então filtro ip do sistema particular pelo endereço MAC, E conecto automaticamente a esse sistema particular usando ssh. Eu tentei os seguintes comandos através da tubulação

 sudo arp-scan --localnet|grep 10|cut -c1-12|xargs ssh myuser@

Aqui 1c em grep é a letra inicial do endereço MAC do meu sistema.

O retorno é o seguinte erro

ssh: Could not resolve hostname : Name or service not known

xargs: ssh: exited with status 255; aborting

    
por SuperKrish 25.11.2016 / 07:57

2 respostas

2

Use o xargs sinalizador de string de substituição

Você precisa usar o sinalizador de string de substituição para xargs. Por exemplo, supondo que o restante de seu pipeline funcione como pretendido:

sudo arp-scan --localnet | grep 10 | cut -c1-12 | xargs -I{} -n1 ssh -tt myuser@{}

Observe que os comandos xargs e ssh precisam de alguns sinalizadores adicionais para funcionar corretamente. É importante destacar a necessidade de passar os -tt flags para SSH para forçar a alocação de PTY no host remoto quando o cliente SSH estiver recebendo entrada padrão de um pipe.

Use as variáveis de substituição e shell de comando

Como alternativa, se você estiver capturando com precisão um único endereço IP, basta capturar o resultado em uma variável shell e invocar o SSH no host correto. Por exemplo, usando o shell Bash:

host_ip=$(sudo arp-scan --localnet | grep 10 | cut -c1-12)
ssh "myuser@${host_ip}"

A principal vantagem dessa abordagem é que é mais fácil depurá-la. No entanto, sua milhagem pode variar.

    
por 25.11.2016 / 08:21
1
  • O primeiro problema é que você está tentando executar ssh myuser@ x.y.z.t (onde x.y.z.t é o endereço IP identificado). Não vai funcionar. Você precisa de ssh [email protected] (observe que não há espaço entre myuse@ e o endereço IP). Você pode tentar sudo arp-scan --localnet | grep ... | sed -e 's/^/myuser@/' | xargs ssh .

  • O segundo problema é que ssh não estabelece uma sessão interativa, reclamando que a entrada padrão não é um terminal. Para manter ssh feliz, você deve fazer a seleção do endereço IP em uma substituição de comando:

    ACCOUNTNAME=myuser
    MACADDRESS=00:50:56:3a:8d:1e
    ssh "$ACCOUNTNAME@$(
      sudo arp-scan --localnet |
      grep "$MACADDRESS" |
      cut -c 1-15
    )"
    

Espero que o grep mostrado seja apenas um exemplo e, para ser real, você use o endereço MAC completo.

Você pode adicionar algum código de tratamento de erros, caso grep não consiga encontrar o endereço IP correspondente ao endereço MAC fornecido.

    
por 25.11.2016 / 08:14