Ich weiß, es wurde ein bisschen über ähnliche Themen diskutiert. Aber hier ist, was ich im Grunde versuche zu tun.
Ich habe ein Überwachungsverzeichnis, das aufgerufen wird, watched
und wann immer eine Datei zu diesem Verzeichnis hinzugefügt wird, möchte ich ein Skript auslösen, das aufgerufen syncbh.sh
wird, um Dateien aus diesem Verzeichnis zu entfernen und sie auf einen Remote-Server hochzuladen.
Die Einschränkung besteht darin, dass Dateien im watched
Verzeichnis von einem Benutzer (Benutzer2) erstellt werden, das Skript jedoch von einem anderen Benutzer (Benutzer1) ausgeführt wird.
Ich habe versucht, Incron zu verwenden, um dies zu erreichen, stoße aber weiterhin auf ein schwerwiegendes Problem, da das Skript zwar von Benutzer1 mit Root-Rechten manuell ausgeführt werden kann, der Incron- Daemon jedoch nie automatisch durch ein Dateierstellungsereignis des anderen Benutzers2 ausgelöst wird.
Ich habe darüber nachgedacht, ob Inoticoming eine bessere Alternative wäre, bin mir aber nicht sicher, wie die Syntax funktioniert. Wenn es einen besseren Weg gibt, dies zu erreichen, oder wenn ich am Ende Inoticoming verwende, wie lautet die Befehlssyntax, um das /home/user1/watched
Verzeichnis zu überwachen und das Skript auszuführen, /usr/local/bin/syncbh.sh
wenn eine Datei in diesem Verzeichnis erstellt / geändert wird?
Jede Hilfe wäre sehr dankbar.
quelle
inoticoming
?Antworten:
Verwenden von
inoticoming
:Sie können ein Skript einfügen
/etc/init.d/
, dasinoticoming
beim Booten ausgeführt wird.Erstellen Sie einen neuen Ordner für das
inoticoming
Protokoll / Letztepid
für daswatched
Ordner befindet:sudo mkdir -p /var/log/inoticoming/watched/
Erstellen Sie ein Skript
inoticoming_watched
in/etc/init.d/
:* Denken Sie daran, <path_to_folder> und <path_to_script> so zu ändern, dass sie dem vollständigen Pfad des
watched
Ordners und dem vollständigen Pfad des auszuführenden Skripts entsprechenMarkieren Sie das Skript als ausführbar:
sudo chmod u+x /etc/init.d/inoticoming_watched
Stellen Sie sicher, dass das Skript von aufgerufen wird
inoticoming_watched
ausführbar ist.Aktualisieren Sie
rc.d
, um den Dienst zu macheninoticoming_watched
dass er beim Booten startet:sudo update-rc.d inoticoming_watched defaults
Sie können das
inoticoming
Login überprüfen/var/log/inoticoming/watched
.quelle
Installieren Sie zunächst Inoticoming :
Dann benutze diesen Befehl:
Achten Sie auf laufende Inoticoming-Prozesse, da diese mehrfach gestartet werden können.
Der Prozess läuft im Hintergrund und beobachtet
/home/user1/watched
Wenn eine Datei in diesem Verzeichnis hinzugefügt oder geändert wird, wird das Skript
/usr/local/bin/syncbh.sh
aufgerufen.Der Parameter für dieses Skript ist in diesem Fall
/home/user1/watched/<name_of_changed_or_modified_file>
{}
wird durch den Dateinamen ersetztquelle
Zuallererst ein Skript, um das
watched
Verzeichnis zu beobachten :2. Um die Synchronisierung als anderer Benutzer (Benutzer2) durchzuführen, gehen Sie wie folgt vor:
Nun , um nicht einen Benutzer Prompt zu machen, Sie festlegen können
sudo
Passwörter in einer Datei und lesen Sie das Kennwort aus dieser Datei bei Bedarf (Anmerkung müssen Sie verwenden-S
mitsudo
dem Sie das Kennwort aus der Datei abrufen müssen).Schreiben Sie Ihr
sudo
Passwort in eine Datei, nehmen Sie anpasswd.txt
, dass der obige Befehl "saugen" lautetDas gesamte Skript sieht nun so aus:
quelle