Como simular o anexo de tubo?

1

Estou usando curlftpfs para montar a unidade remota. Infelizmente, com o arquivo localizado no lado remoto, não posso usar >> operation. Como eu entendi de este link não é possível anexar ao arquivo existente (a menos que eu esteja enganado , Por favor me corrija). Então eu tenho função assim:

LogMe()
{
  p="$1"
  DateTime='date "+%Y/%m/%d %H:%M:%S"'
  echo $DateTime' : '$p >> $logfile
}

$logfile é o arquivo remoto montado usando curlftpfs . Como posso modificar minha função para suportar o acréscimo sem usar << ?

    
por Pablo 13.10.2015 / 15:11

1 resposta

1

A melhor maneira é simplesmente ignorar o curlftpfs para este acesso, porque o ftp O protocolo tem um comando append para adicionar dados a um arquivo. Então configure um one-off conexão ftp apenas para a atualização, por exemplo:

echo $DateTime' : '$p | 
curl --append -T - ftp://user:password@host/some/logfile

Este 2º ftp não deve perturbar indevidamente o curlftpf se você não se referir a o arquivo de log através do ponto de montagem.

No entanto, se você preferir não usar um segundo ftp, terá que copiar todo o arquivo de log, adicione a linha e copie-a de volta. O comando sponge pode ajudá-lo a simplificar a tarefa:

(cat $logfile; echo $DateTime' : '$p) | sponge $logfile

a esponja coleta toda a entrada em um arquivo temporário antes de renomear "atomicamente" para o arquivo de saída.

    
por 13.10.2015 / 17:16