Eu sei que houve um pouco de discussão sobre tópicos semelhantes a este. Mas aqui está o que estou basicamente tentando fazer.
Eu tenho um diretório monitor chamado watched
e sempre que um arquivo é adicionado a esse diretório, desejo acionar um script chamado syncbh.sh
que retira os arquivos desse diretório e os carrega em um servidor remoto.
A ressalva é que os arquivos são criados no watched
diretório por um usuário (usuário2), mas o script é executado por outro (usuário1).
Tentei usar o incron para fazer isso, mas continuo enfrentando um problema grave, porque, embora o script possa ser executado manualmente pelo usuário1 com privilégios de root, o daemon do incron nunca é acionado automaticamente por um evento de criação de arquivo pelo outro usuário2.
Pensei se o inoticoming seria uma alternativa melhor, mas não sei como funciona a sintaxe disso. Se existe uma maneira melhor de fazer isso, ou se eu acabar usando inoticoming, qual seria a sintaxe do comando para pedir para observar o /home/user1/watched
diretório e executar o script /usr/local/bin/syncbh.sh
se um arquivo for criado / modificado nesse diretório?
Qualquer ajuda seria muito apreciada.
fonte
inoticoming
?Respostas:
Usando
inoticoming
:Você pode colocar um script
/etc/init.d/
que seja executadoinoticoming
no momento da inicialização.Crie uma nova pasta para manter o
inoticoming
registro / últimopid
dawatched
pasta:sudo mkdir -p /var/log/inoticoming/watched/
Crie um script
inoticoming_watched
em/etc/init.d/
:* Lembre-se de alterar <path_to_folder> e <path_to_script> para corresponder ao caminho completo da
watched
pasta e ao caminho completo do script a ser executadoMarque o script como executável:
sudo chmod u+x /etc/init.d/inoticoming_watched
Verifique se o script chamado por
inoticoming_watched
é executável.Atualize
rc.d
parainoticoming_watched
iniciar o serviço no momento da inicialização:sudo update-rc.d inoticoming_watched defaults
Você pode verificar o
inoticoming
login/var/log/inoticoming/watched
.fonte
Primeiro de tudo, instale inoticoming :
Então use este comando:
Preste atenção aos processos em andamento de inoticoming, porque eles podem ser iniciados várias vezes.
O processo é executado em segundo plano e está assistindo
/home/user1/watched
Quando um arquivo é adicionado ou alterado nesse diretório, o script
/usr/local/bin/syncbh.sh
é chamado.O parâmetro para este script é neste caso
/home/user1/watched/<name_of_changed_or_modified_file>
{}
é substituído pelo nome do arquivofonte
Primeiro de tudo, um script para assistir ao
watched
diretório:Segundo Para sincronizar como outro usuário (usuário2):
Agora, para não solicitar ao usuário, você pode definir sua
sudo
senha em um arquivo e ler a senha deste arquivo quando necessário (observe que você deve usar-S
comsudo
para obter a senha do arquivo do).Coloque sua
sudo
senha em um arquivo, suponha quepasswd.txt
o comando acima será péssimo comoAgora, o script geral será como:
fonte