Cos'è lsof -i | grep -E "(LISTEN | ESTABLISHED)" composto da?

2

Ho ricevuto consigli per verificare se un'app di iTunes invia dati al cloud utilizzando questa riga di comando

lsof -i | grep -E "(LISTEN|ESTABLISHED)"

Qualcuno può spiegare come funziona? Come funziona la pipeline qui?

    
posta Elad Benda 12.12.2013 - 09:05
fonte

1 risposta

6

Viene eseguito il primo lsof :

lsof - list open files

con l'opzione -i:

-i [i] selects the listing of files any of whose Internet address matches the address specified in i. If no address is speci- fied, this option selects the listing of all Internet and x.25 (HP-UX) network files.

Quindi ottieni una lista simile a questa:

Safari      252 pfitz   33u  IPv4 0x1052718d4b4f54ef      0t0  TCP localhost:49289->localhost:6263 (ESTABLISHED)
Safari      252 pfitz   36u  IPv4 0x1052718d4b4f54ef      0t0  TCP localhost:49289->localhost:6263 (ESTABLISHED)
iTunes      254 pfitz   28u  IPv4 0x1052718d460f9d07      0t0  TCP *:49196 (LISTEN)
iTunes      254 pfitz   30u  IPv4 0x1052718d460fb4ef      0t0  TCP *:daap (LISTEN)
iTunes      254 pfitz   31u  IPv6 0x1052718d37b6b627      0t0  TCP *:daap (LISTEN)

con molte più voci. Per filtrare le voci si utilizza grep :

The grep utility searches any given input files, selecting lines that match one or more patterns. By default, a pattern matches an input line if the regular expression (RE) in the pattern matches the input line without its trailing newline. An empty expression matches every line. Each input line that matches at least one of the patterns is written to the standard output.

grep is used for simple patterns and basic regular expressions (BREs); egrep can handle extended regular expressions (EREs). See re_format(7) for more information on regular expressions. fgrep is quicker than both grep and egrep, but can only handle fixed patterns (i.e. it does not interpret regular expressions). Patterns may consist of one or more lines, allowing any of the pattern lines to match a portion of the input.

e l'opzione -E effettua le seguenti operazioni:

-E, --extended-regexp

Interpret pattern as an extended regular expression (i.e. force grep to behave as egrep).

In questo caso la regex è "(LISTEN|ESTABLISHED)" che significa semplicemente stampare le righe con listen o stabilito.

Conclusione

  1. lsof crea un elenco con tutte le connessioni Internet.
  2. Per essere utile deve essere filtrato con grep
  3. Quindi viene filtrato con l'espressione regolare che sta cercando LISTEN o ESTABLISHED
risposta data 12.12.2013 - 09:41
fonte

Leggi altre domande sui tag