Grep regex Stdout a telnet

Sto cercando di utilizzare grep per get un risultato di regex e mettere i risultati in onda su telnet che esegue una port aperta a un server di nodes.

Il grep ricevuto continuo, ma varia in intervallo, comandi da un programma in esecuzione, greps fuori un numero poi pipes che su telnet. Ecco il mio tentativo di esempio:

  • Nessun disco più sul server
  • schermo -R non funziona con ssh
  • linux: l'output di command "host" più corto
  • Linux vs vmware performance OpenBSD
  • Consenti solo root per modificare il filesystem
  • I pericoli e le cifre di LVM
  • echo "TEST 1234\r\n" | grep -e "[0-9]{4}" | telnet 127.0.0.1 1234 

    Non posso cambiare il formato della string dell'echo "spoof". L'eco senza il grep invia con successo la string a telnet. Il grep non sembra submit a stdOut.

    Sto aspettando che telnet riceva i dati dal pipe come:

     1234 7645 8376 

    Qualsiasi aiuto per raggiungere questo objective?

    3 Solutions collect form web for “Grep regex Stdout a telnet”

    Non sono sicuro di come hai raggiunto la conclusione che grep non printing la sua produzione su stdout, che è solo scorretto.

    Suggerisco di verificare ciò aggiungendo un passo della pipeline alla volta per vedere where si verificano i problemi.
    In primo luogo troverai che il tuo command echo letteralmente printing \r\n alla fine (si potrebbe desiderare echo -e ) e che il command grep non printing nulla (perché il tuo pattern non corrisponde).

    Tuttavia, se si risolve il pattern ( grep -e "[0-9]\{4\}" o grep -E "[0-9]{4}" ) si noterà che printing tutta la linea per tutte le linee che corrispondono, non solo la parte corrispondente (si potrebbe desiderare grep -o ).

    Qualcosa di simile sembra un inizio più ragionevole della tua condotta:

      echo -e "TEST 1234\r\n" | grep -o -e "[0-9]\{4\}" 

    Dovresti essere in grado di continuare da lì (tuttavia, suggerirei di considerare l'utilizzo di nc invece di telnet ).

    Devi cambiare grep a:

     grep -e "[0-9]\{4\}" 

    Non hai bisogno di telnet per conseguire ciò, Bash shell ha questa funzionalità incorporata, ad esempio:

     exec {stream}<>/dev/tcp/127.0.0.1/1234 printf "TEST 1234\r\n" >&${stream} grep -o "[0-9]\{4\}" <&${stream} 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.