Sé que ha habido un poco de discusión sobre temas similares a este. Pero esto es lo que básicamente estoy tratando de hacer.
Tengo un directorio de observación llamado watched
y cada vez que se agrega un archivo a ese directorio, quiero activar un script llamado syncbh.sh
que sacará los archivos de ese directorio y los cargará en un servidor remoto.
La advertencia es que los archivos son creados en el watched
directorio por un usuario (usuario2), pero el script es ejecutado por otro (usuario1).
Intenté usar incron para lograr esto, pero sigo encontrándome con un problema importante porque si bien el script1 puede ser ejecutado manualmente por el usuario1 con privilegios de root, el demonio incron nunca se activa automáticamente por un evento de creación de archivos por parte del otro usuario2.
He pensado si la inoticoming sería una mejor alternativa, pero no tengo claro cómo funciona la sintaxis. Si hay una mejor manera de lograr esto, o si termino usando inoticoming, ¿cuál sería la sintaxis del comando para pedirle que mire el /home/user1/watched
directorio y ejecute el script /usr/local/bin/syncbh.sh
si se crea / modifica un archivo dentro de ese directorio?
Cualquier ayuda sería muy apreciada.
fuente
inoticoming
?Respuestas:
Utilizando
inoticoming
:Puede poner un script
/etc/init.d/
que se ejecuteinoticoming
en el momento del arranque.Cree una nueva carpeta para guardar el
inoticoming
registro / últimopid
para lawatched
carpeta:sudo mkdir -p /var/log/inoticoming/watched/
Crea un script
inoticoming_watched
en/etc/init.d/
:* Recuerde cambiar <path_to_folder> y <path_to_script> para que coincidan con la ruta completa de la
watched
carpeta y la ruta completa del script para ejecutarMarque el script como ejecutable:
sudo chmod u+x /etc/init.d/inoticoming_watched
Asegúrese de que el script llamado por
inoticoming_watched
sea ejecutable.Actualización
rc.d
para que el servicio seinoticoming_watched
inicie en el momento del arranque:sudo update-rc.d inoticoming_watched defaults
Puedes consultar el
inoticoming
inicio de sesión/var/log/inoticoming/watched
.fuente
En primer lugar, instale inoticoming :
Luego usa este comando:
Preste atención a los procesos en curso de inoticoming, ya que pueden iniciarse varias veces.
El proceso se ejecuta en segundo plano y está observando
/home/user1/watched
Cuando se agrega o cambia un archivo en ese directorio,
/usr/local/bin/syncbh.sh
se llama al script .El parámetro para este script es en este caso
/home/user1/watched/<name_of_changed_or_modified_file>
{}
se reemplaza por el nombre del archivofuente
En primer lugar, un script para ver el
watched
directorio:Segundo Para sincronizar como otro usuario (usuario2) el:
Ahora, para no hacer que el usuario solicite, puede establecer su
sudo
contraseña en un archivo y leer la contraseña de este archivo cuando sea necesario (tenga en cuenta que debe usar-S
consudo
para obtener la contraseña del archivo).Pon tu
sudo
contraseña en un archivo, supongamospasswd.txt
, entonces el comando anterior será una mierdaAhora el guión general será como:
fuente