Jag försöker förstå vad grep -v grep gör nedan:

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

Eller finns det ett bättre sätt att hitta TCP-anslutningstest?

Kommentarer

  • Vänligen konsultera nästa sida först. I detta fall man grep

Svar

Det utesluter alla rader som innehåller bokstavssekvensen grep från föregående rörutmatning.

Svar

Om du vill kontrollera att du kan upprätta en ssh-anslutning inom 5 sekunder och köra ett kommando gör du bara:

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

Ditt kommando som det är meningslöst. Eftersom du inte ger ett kommando för att köra på fjärrservern kommer ssh att köras i rlogin -läge, där en pseudoterminal begärs och fjärranvändarens inloggningsskal startas (eller eventuellt en ForcedCommand).

Sedan tillämpar du flera filter på utgången:

  • grep -v "Connection refused": filtrera bort vilken rad som helst från utdata som innehåller Connection refused. Det är lite meningsfullt eftersom det felmeddelandet om det verkade skulle skrivas på stderr, inte standardutmatningen som grep filtrerar, och också för att:
  • grep "Connected to": välj endast de rader som innehåller Connected to. Det skulle också utesluta raderna som innehåller Connection refused eftersom det är osannolikt att en rad innehåller båda.
  • grep -v grep, ta också bort raderna som innehåller grep (så det skulle vara rader som innehåller både Connected to och grep och inte Connection refused!)
  • wc -l: räkna antalet resulterande rader (så raderna i ssh ”s stdout som innehåller Connected to utom de som också innehåller grep eller Connection refused). Observera att wc bara matar ut det numret när anslutningen är stängd när shell-sessionen har avslutats, som när användaren anger exit . Men sedan igen, eftersom användaren inte ser någon utdata (eftersom allt går till wc så småningom) kommer användaren att ha lite aning om att han behöver ange exit för att avsluta sessionen.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *