Jeg prøver å forstå hva grep -v grep gjør nedenfor:

ssh $server -p $port -o "ConnectTimeout 5" | grep -v "Connection refused" | grep "Connected to" | grep -v grep | wc -l 

Eller er det en bedre måte å finne TCP-tilkoblingstest?

Kommentarer

  • Vennligst kontakt mannssidene først. I dette tilfellet man grep

Svar

Den ekskluderer alle linjer som inneholder bokstavsekvensen grep fra forrige rørutgang.

Svar

Hvis du vil kontrollere at du kan opprette en ssh-forbindelse innen 5 sekunder og kjøre en kommando, gjør du bare:

if ssh -o BatchMode=yes -o ConnectTimeout=5 -p "$port" "$server" true; then printf "%s\n" "$server is up" fi 

Kommandoen din, som den er, gir liten mening. Når du ikke gir en kommando for å kjøre på den eksterne serveren, vil ssh kjøre i rlogin modus, der en pseudo-terminal blir bedt om og påloggingsskallet til den eksterne brukeren startes (eller muligens ForcedCommand).

Deretter bruker du flere filtre på utgangen:

  • grep -v "Connection refused": filtrer ut hvilken som helst linje fra utdata som inneholder Connection refused. Det gir liten mening som feilmeldingen hvis den dukket opp ville bli skrevet på stderr, ikke standardutgangen som grep filtrerer, og også fordi:
  • grep "Connected to": velg bare linjene som inneholder Connected to. Det vil også ekskludere linjene som inneholder Connection refused da det er lite sannsynlig at en linje inneholder begge.
  • grep -v grep, fjern også linjene som inneholder grep (slik at det ville være linjer som inneholder både Connected to og grep og ikke Connection refused!)
  • wc -l: teller antall resulterende linjer (så linjene i ssh «s stdout som inneholder Connected to bortsett fra de som også inneholder grep eller Connection refused). Vær oppmerksom på at wc bare vil sende det tallet når forbindelsen er lukket, når shell-økten er avsluttet, som når brukeren skriver inn exit . Men igjen, siden brukeren ikke ser noen utdata (siden alt går til wc til slutt), vil brukeren ha liten anelse om at han trenger å legge inn exit for å avslutte økten.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *