Estoy tratando de entender qué grep -v grep
significa a continuación:
ssh $server -p $port -o "ConnectTimeout 5" | grep -v "Connection refused" | grep "Connected to" | grep -v grep | wc -l
¿O existe una mejor manera de encontrar la prueba de conexión TCP?
Respuesta1
Si desea comprobar que puede establecer una conexión ssh en 5 segundos y ejecutar un comando, simplemente haga:
if ssh -o BatchMode=yes -o ConnectTimeout=5 -p "$port" "$server" true; then
printf '%s\n' "$server is up"
fi
Tu orden tal como está tiene poco sentido. Como no proporciona un comando para ejecutar en el servidor remoto, ssh
se ejecutará en el rlogin
modo en el que se solicita un pseudo-terminal y se inicia el shell de inicio de sesión del usuario remoto (o posiblemente un ForcedCommand).
Luego, estás aplicando varios filtros a la salida:
grep -v "Connection refused"
: filtra cualquier línea delproduccióneso contieneConnection refused
. Eso tiene poco sentido ya que el mensaje de error, si apareciera, se escribiría en stderr, no en la salida estándar quegrep
se está filtrando, y también porque:grep "Connected to"
: seleccione sólo las líneas que contienenConnected to
. Eso también excluiría las líneas que contienen,Connection refused
ya que es poco probable que una línea contenga ambas.grep -v grep
, elimine también las líneas que contienengrep
(¡por lo que serían líneas que contienen tantoConnected to
ygrep
como noConnection refused
!)wc -l
: cuenta el número de líneas resultantes (por lo que las líneas enssh
la salida estándar que contienenConnected to
excepto aquellas que también contienengrep
oConnection refused
). Tenga en cuenta quewc
solo generará ese número cuando se cierre la conexión, cuando la sesión de shell haya finalizado, como cuando el usuario ingresaexit
. Pero, de nuevo, dado que el usuario no verá ningún resultado (ya que todo terminaráwc
eventualmente), el usuario tendrá poca idea de que necesita ingresarexit
para finalizar esa sesión.
Respuesta2
Excluye todas las líneas que contienen la secuencia de letras grep
de la salida de canalización anterior.