Estoy tratando de entender lo que grep -v grep hace a continuación:

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

¿O hay una mejor manera de encontrar la prueba de conexión TCP?

Comentarios

  • La próxima vez, consulte primero las páginas de manual. En este caso, man grep

Responder

Excluye todas las líneas que contienen la secuencia de letras grep de la salida de tubería anterior.

Respuesta

Si desea verificar 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 

Su comando tal como está tiene poco sentido. Como no proporciona un comando para que se ejecute en el servidor remoto, ssh se ejecutará en el rlogin modo, donde se solicita un pseudo-terminal y se inicia el shell de inicio de sesión del usuario remoto (o posiblemente un ForcedCommand).

Luego, está aplicando varios filtros a la salida:

  • grep -v "Connection refused": filtre cualquier línea de la salida que contiene Connection refused. Eso tiene poco sentido, ya que el mensaje de error, si apareciera, estaría escrito en stderr, no en la salida estándar que grep está filtrando, y también porque:
  • grep "Connected to": seleccione solo las líneas que contienen Connected to. Eso también excluiría las líneas que contienen Connection refused, ya que es poco probable que una línea contenga ambos.
  • grep -v grep, también elimine las líneas que contienen grep (por lo que serían líneas que contienen tanto Connected to y grep y no Connection refused!)
  • wc -l: cuente el número de líneas resultantes (entonces las líneas en ssh «s stdout que contienen Connected to excepto aquellos que también contienen grep o Connection refused). Tenga en cuenta que wc solo generará ese número cuando se cierre la conexión, cuando la sesión de shell haya finalizado, como cuando el usuario ingresa exit . Pero, de nuevo, dado que el usuario «no verá ningún resultado (ya que todo va a wc eventualmente), el usuario tendrá poca idea de que necesita ingresar exit para terminar esa sesión.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *