iptrigger
iptrigger
This program walks a queue (and all its subqueues up to 25 levels) and checks
for new files, changes and deletions.
It can then be used to start another program or script accordingly.
The whole process is repeated every 5 minutes - changeable by the -w input
switch.
It uses a parameter file, tables/setup/TRIGGER by default, to determine which
script to run. The syntax of the parameter file is :
; comment line is any with a leading semi-colon
new: (program/script with all its switches)
Script to run for a NEW file found default: none
chg: (program/script with all its switches)
Script to run for a file that has been ALTERED. default: none
This can sometimes also be a new file if the file is opened and written
to only after a delay.
del: (program/script with all its switches)
Script to run for a file is deleted default: none
read: (program/script with all its switches)
Script to run for a file has been READ default: none
(unix only ..)
include-file-mask: (FipSeq string)
Allow only files containing this string default: all files
exclude-file-mask: (FipSeq string)
Ignore files containing this string default: exclude none
eg: exclude-file-mask:.lock
include-dir-mask: (FipSeq string)
Search only queues containing this string default: all queues
exclude-dir-mask: (FipSeq string)
Ignore queues containing this string default: exclude none
eg: exclude-dir-mask:.lock
case-sensitive-mask:yes/no default: no
is the Mask case-sensitive
locale: (name) default: locale of the server
change the default locale. The locale MUST be valid !
eg locale:dk
chkexists: (Full Path/file or queuename) default: none
chkexists-timeout: (time between trying/logging if path is not there) defauly:
60 secs
Use these for NAS/non-local drives which may disappear from time to time.
This is a complete pathname of either a standing file or a queue. This is
used to check that NFS drives are actually mounted BEFORE writing new files.
eg : chkexists:/data1/nfs/helios/.Desktop
For Win, use fwd slashes '/' rather than '\' make the string much easier to
read !!
chkexists://195.13.83.99/d$/.DSstore
max-level: (number) default: all
Normally iptriggers walks the subqueues. This allows a limit (up to 25).
Level 1 is the top folder, level 2 one level down etc
log-line: (FipSeq String)
log message to add to default
--------- Running redundant iptrigger on two Fip systems looking at the same
NAS drive
check-primary-server: pseudo-host name that is specified in
tables/sys/DEST_REDUN
that is used whether the current host should be getting the files or not.
ie check-primary-server:remotewire
and in the DEST_REDUN is
; psuedohost primary secondary
remotewire fip1 fip2
Then if fip1 is up, the 'nntpwire' on fip1 will always get while on fip2 it
will just check/loop.
if fip1 is down, the 'nntpwire' on fip2 will start getting.
balance-group: name of a balance group (in tables/sys/BALANCE) to distribute
the current state file (in /fip/fix) when changed (see doc on 'ipbalan')
This is often used where a second system could be used as a redundant server
if the main system fails.
balance-folder: name of the folder (in spool) where ipbalan is running default
2balance
example of a balance group
balance-group:baltrigger
and the sys/BALANCE file might have :
group:baltrigger host:fip1 ignore-localhost: nofiphdr:
group:baltrigger host:fip2 ignore-localhost: nofiphdr:
Note that
Only one include-file OR exclude-file is allowed
Only one include-dir OR exclude-dir is allowed
Note that
Only one of the NEW/CHG/READ scripts will be run at any one time.
Example:
;
new:/fip/local/oinky -1 \EQ/\EN -ADD
chg:/fip/local/oinky -1 \EQ/\EN -CHG
Note that FipSeq can be added for runtime information. For each file the
follwoing FipHdr fields are filled in :
EP : The top queue
EQ : subqueue under the top where the file resides
EN : Actual filename
Input parameters (all optional) are :
-b : waiting period in seconds between files default: 1 sec
-C : coldstart - ALL files to be processed as NEW on the 1st scan. def: no
-d : Winnt - drive for the top queue default: fip drive
-e : If the queue name is in the form dd-mmm-yyyy, default: ignore
only trigger on day, day+1 .. day+e
-e 5 = for 5 days.
-f : stable time for file default: none - file is processed immediately
Use this for large files being copied into a folder which may not complete
within a second.
-H : hotstart - NO files to be processed at all on the 1st scan. def: all are.
-l : log every new file pls default: do NOT log
-L : log every new file AND display on screen default: do NOT log
-q : top queue to monitor default: spool/trigger
-Q : quiet mode default: no, verbose
this does not message every time the check-primary-system runs
-w : waiting period in seconds between scans default: 300 (ie 5 mins)
-X : scan once and then stop default: keep scanning
-z : name of parameter file in tables/setup default: TRIGGER
-Z : WINNT - convert ALL '/' to '\' in the scripts def: only program
-v : print version no and exit
Version Control
;1t12 4feb98 added better name (ie more unique) for the trigger name in fix
;a 8feb98 WINNT mods
;b 21dec99 added winnt drive
;c/d 23may00 bug stopped tree walking and added READ
;e-g 30jul03 max-level added; better handling of WINNT new
;h 22apr05 for multiple levels WINNT
;i-r 24may05 redid testing and added DELs
;s 12feb07 added FipSeq - replace, partial etc
;t9 04aug08 poss truncation with v long folder names ;4 added -H to ignore
changes 1st time around
;6-9 30jun10 added check-primary-server and balance-group and balance-folder
;9-11 13jul10 added locale, case-sensitive-mask, chkexists and
chkexists-timeout
(copyright) 2025 and previous years FingerPost Ltd.