Você gera um shell, envia um comando ssh, faz coisas e faz logout da sessão ssh. Você nunca sai do shell.
Eu normalmente edito meu script gerado por autoexpecto para não gerar um shell, mas na verdade gero o que quero fazer.
Uma breve reescrita:
#!/usr/bin/expect -f
# default timeout is 10 seconds
spawn ssh [email protected]
expect -exact "Password: "
send -- "passwordhere!!!\r"
expect -exact "887VA#"
send -- "show interface vlan 2\r"
expect -exact "Vlan2 is up, line protocol is up \r"
send -- "logout\r"
expect eof
Com relação à lógica do seu script: o que você deve fazer se o protocolo de linha não for para cima?