Seu problema real: o padrão {".{8}[0-9]{5}"}
corresponderá a uma sequência contendo aspas duplas seguida por 8 caracteres seguidos por 5 dígitos seguidos por aspas duplas - essas aspas duplas devem estar em seu padrão? Às vezes as pessoas ficam confusas com a citação de Tcl, então minha pergunta não é para levar qualquer julgamento com ela.
Além disso, quando você tem 2 padrões em um bloco de expectativa, qualquer um pode corresponder primeiro: você espera que os 8 caracteres e 5 números sejam vistos antes da primeira nova linha?
Espere, ^
coincidirá no início da primeira linha. Se você quiser corresponder explicitamente uma nova linha, use \n
.
Infelizmente, o tratamento de comentários do Tcl pode ser confuso. O caractere de comentário #
somente inicia um comentário se for visto onde um comando pode ir .
Os comentários que você coloca dentro do bloco de espera não comentam essas linhas .
expect {
"Operations Team.*" {
puts "NewLine Was Caught After pbrun /bin/su - command"
#break #Exit While loop, which will exit the server since there is only one While Loop aprund the whole SSH Session
}
"Rejected.*" {
puts "NewLine & Return Carraige Was Caught After pbrun /bin/su - command"
#break #Exit While loop, which will exit the server since there is only one While Loop aprund the whole SSH Session
}
#"^" { ;#This command will work because in the expect only picks up a "^" character from the [send "pbrun /bin/su -"] command. This is an issues as the pbrun command has more ouput that just a "^", but expect only picks up the "^" character. You can use any other command like "ls", and expect does not write the ls command ouput to the buffer, only a newline character will be written to the buffer. This is an issue as I am unable to grab anything from expect.
# puts "Newline Character Met"
#}
}
Você está essencialmente passando para o comando expect
uma lista contendo pattern
e action
pares. O terceiro padrão é literalmente os 4 caracteres #"^"
e a terceira ação é uma string contendo um script que contém 3 comentários.