Você pode tentar substituir o comando scp
no servidor por uma versão modificada que faz o que você precisa. scp
é um programa muito simples e adicionar algum código de log não deve ser uma tarefa difícil.
Basicamente, desejo registrar cada arquivo enviado ou recebido via SCP no servidor.
Digamos que um usuário faça um SCP do Server-1 para o Server-2. Eu descobri a maneira de obter logs no lado do remetente, mas como conseguir o que foi transferido no lado do receptor?
Eu quero os logs no lado do receptor contendo os nomes dos arquivos que são transferidos para ele via SCP.
Além disso, para obter os logs no lado dos remetentes, estou usando meu script bash, que primeiro salva o nome do arquivo em um arquivo de log e, em seguida, usa o SCP para transferi-lo. Existe uma abordagem melhor para isso?
Agradecemos antecipadamente por qualquer sugestão.
Você pode tentar substituir o comando scp
no servidor por uma versão modificada que faz o que você precisa. scp
é um programa muito simples e adicionar algum código de log não deve ser uma tarefa difícil.
Você provavelmente está usando o pacote de software OpenSSH. O utilitário OpenSSH scp
não registra nada. Ele suporta a saída de depuração para a sessão SSH subjacente, mas isso não registra as transferências de arquivos reais que estão ocorrendo.
Da mesma forma, o servidor OpenSSH pode ser configurado para registrar detalhes sobre o que está fazendo e pode ser configurado para registrar o fato de que um usuário conectou e executou scp
, mas não registrará as transferências de arquivos reais ocorrendo.
Se você não conseguir que esses usuários usem o SFTP, existem três abordagens disponíveis para você:
Investigue servidores alternativos (em outras palavras, comerciais) SSH / SFTP / SCP. Eles geralmente devem suportar o registro de transferências de arquivos.
Substitua o utilitário scp
no servidor por um que registre os dados desejados. OpenSSH é open source. Alguém que saiba programar em C para Unix poderia baixar a fonte e modificá-la.
Substitua o utilitário scp
por um "wrapper" que inicialize o programa scp original e monitore o que ele faz. Existem ferramentas de depuração para o Unix que podem monitorar o que outro processo está fazendo.
Eu precisava registrar scp
transferências uma vez e usei a terceira abordagem. Eu escrevi um script Perl que lançou o programa scp original em strace . Strace mostraria os nomes dos arquivos sendo abertos e fechados pelo processo scp. O script Perl analisou a saída strace e descobriu quais arquivos estavam sendo transferidos.