Compor nome do arquivo dentro do script esperado

0

Eu tenho um arquivo com várias linhas, digamos:

server_file.txt:

[main]
server1 param1 param2 param3
server2 param1 param2 param3

Eu quero pegar o primeiro valor da última coluna para compor um nome de arquivo dentro de um script expect para que o nome do arquivo seja: server2_030417T124700 , onde 030417T124700 é o atual data em que o arquivo foi criado.

Consegui alcançar a parte da data com estas linhas:

#!/usr/bin/expect -f
log_file ./log/post.log
<some_code>
system mv ./log/post.log ./log/post_[clock format [clock seconds] -format {%Y%m%dT%H%M%S}].log

Mas onde eu tenho " post _ " eu gostaria de ter " server2 " baseado na última linha do server_file.txt

Eu tentei fazer isso usando uma variável que executa o comando bash tail -1 server_file.txt | awk '{print $1}' sem sucesso e acho que é possível fazê-lo sem usar o comando bash.

    
por Zumo de Vidrio 03.04.2017 / 12:57

2 respostas

3

Adicione essas 3 linhas de tcl code no seu script expect para obter o nome do servidor.

set fp [open "server_file.txt" r]
while {[gets $fp data] >= 0} {set servername [lindex [regexp -inline -all -- {\S+} $data] 0]}
close $fp
    
por 03.04.2017 / 14:48
1

Isso foi feito evitando o comando tail e usando a sintaxe apropriada para awk quando executado do script expect :

#!/usr/bin/expect -f
log_file ./log/post.log
set servername [exec awk {FNR>1 {print $1}} server_file.txt]
system mv ./log/post.log ./log/"$servername"_[clock format [clock seconds] -format {%Y%m%dT%H%M%S}].log
    
por 03.04.2017 / 14:23