¿Cómo consigo que mi declaración de expectativa no genere la salida estándar del primer comando?

¿Cómo consigo que mi declaración de expectativa no genere la salida estándar del primer comando?

Lo que intento hacer es ejecutar un comando ssh que imprima el /etc/shadowarchivo. Obviamente ese archivo requiere root o sudopermiso, y no tengo credenciales de root, por lo tanto tengo que usar sudo.

Aquí está el comando que he elaborado:

expect -c 'spawn -noecho ssh -q -t -S /tmp/t2.ssh dummy "sudo cat /etc/shadow";expect "assword"; send "password99\r";interact'

Genera exactamente lo que necesito, pero también muestra la solicitud de la contraseña de sudo en la primera línea:

[sudo] password for student99:
root:$x$xxx:18029:0:99999:7:::
daemon:*:17575:0:99999:7:::
bin:*:17575:0:99999:7:::
sys:*:17575:0:99999:7:::
sync:*:17575:0:99999:7:::

Sin utilizar otros programas (como grep, awk, tail, etc.), ¿hay alguna manera de modificar el expectcomando para que imprima solo la salida del comando cat y no el [sudo] password for student99:mensaje?

Solución:
Gracias a @larsks, mi comando de trabajo final es:

expect -c 'spawn -noecho ssh -q -t -S /tmp/t2.ssh dummy "sudo cat /etc/shadow";log_user 0;expect "assword"; send "password99\r";interact'

Respuesta1

Puede desactivar el registro de salida configurando log_user 0. Delos documentos:

log_user -info|0|1
    By default, the send/expect dialogue is logged to stdout (and a logfile if
    open). The logging to stdout is disabled by the command "log_user 0" and
    reenabled by "log_user 1". Logging to the logfile is unchanged.

    The -info flag causes log_user to return a description of the most recent
    non-info arguments given. 

información relacionada