arquivo não está funcionando no script de espera

1

Estou tentando verificar se existe uma determinada linha no nome do arquivo em um host. Portanto, somente se o padrão específico for encontrado no comando grep, um dummy.txt será criado. Então eu quero verificar se dummy.txt existe como uma condição e prossiga.

Mas mesmo que o dummy.txt esteja sendo criado, ele não está sendo encontrado pela instrução if:

if {[file exists $fileName] }

e o controle é transferido para o bloco else. Qual seria a razão? Existe algum método mais fácil de conseguir o que estou tentando?

 set Host [lindex $argv 0 ]
 spawn ssh -o StrictHostKeyChecking=no userid@$Host
 expect "*assword*"
 send "password\n"
 expect "+"
 send "cd path/that/contains/filename\n"
 expect "*$*"
 send "pwd\n"
 set fileName dummy.txt
 send {grep '\[abc\]' filename | wc -l | { read line; [ "$line" != "0" ] && echo "$line"> dummy.txt; }}
 send "\n"
 expect "+"
 send {grep 'xyz' filename | wc -l | { read line; [ "$line" != "0" ] && echo "$line"> dummy.txt; }}
 send "\n"
 expect "+"
 send "chmod 777 dummy.txt\n"
 if {[file exists $fileName] } {

   send {printf "\nabc xyz already exists"} 
   send "\n"
   expect "+"
   send "ls -l\n"
   expect "+"
   send "rm dummy.txt\n"
   expect "+"
   send "ls -l\n"
   expect "+"
        send "exit\n"
  } else {
        send {printf "cannot find $fileName"}
   send "\n"
   expect "+"
   send {printf "\n[abc]\nxyz\n" >> filename}
   send "\n"
   expect "+"
   send "cat filename\n"
   expect "+"
    send "exit\n"

    }
    
por user417721 11.02.2015 / 10:08

1 resposta

1

if {[file exists $fileName] } verificará se o arquivo existe no sistema local (aquele em que expect está sendo executado), mas o arquivo criado condicionalmente estará no host remoto (aquele em que o script efetua login com ssh ), se existir. Além disso, filename é dummy , mas o arquivo criado condicionalmente é dummy.txt .

    
por 11.02.2015 / 13:09