Re: regex quirks
Xander Cage <[email protected]>
| Newsgroups | gmane.comp.sysutils.cfengine.general |
|---|---|
| Message-ID | <[email protected]> |
hi, templates would be much nicer, unfortunately this is not possible here, to much "specialities" so i must do line edits, and aix is not supporting /etc/cron.d files. chris On Wednesday, July 28, 2021 at 8:33:32 PM UTC+2 Bas van der Vlies wrote: > Hi Xander, > > I knnow that is not the answer to your problem. But I use mostly mustaache > templates with json data to generate the file. For root cron file > generation. I prefer filesi in /etc/cron.d. > In the cf_surfsara_lib this is generated with inline mustach: > * > https://github.com/basvandervlies/cf_surfsara_lib/blob/master/doc/library/files.md#sara_make_cron_filename-data > (doc) > * > https://github.com/basvandervlies/cf_surfsara_lib/blob/affc1d6cf9e7f2cb14876b65cef3384bf4d5276a/masterfiles/lib/surfsara/files.cf#L173 > > Maybe it is useful for you. > > > On 28 Jul 2021, at 16:37, Xander Cage <[email protected]> wrote: > > > > i also tried to compare the cron line with the file content using strcmp > and regline to check if strings are equal or not with unfortunatly was not > successfull. > > > > On Wednesday, July 28, 2021 at 4:29:43 PM UTC+2 Xander Cage wrote: > > > > hey, > > > > i'm toying around in making a bundle for crontab editing (add, modify, > remove) and regex is > > beginning to bite me. > > > > i got an "informational" message that my pattern matching skills are > downlevel. > > > > /var/cfengine/bin/cf-agent -KI -f ./nmon_cron_test.cf > > info: Promised replacement '0 0 * * * /usr/bin/nmon -F > /var/log/nmon/`hostname`_`date +'\%y\%m\%d_\%H\%M'`.nmon -s 300 -c 288 > 1>/dev/null 2>/dev/null' for pattern '^.*/usr/bin/nmon -F.*$' is not > properly convergent while editing '/var/spool/cron/crontabs/root' > > info: Because the regular expression '^.*/usr/bin/nmon -F.*$' still > matches the end-state replacement string '0 0 * * * /usr/bin/nmon -F > /var/log/nmon/`hostname`_`date +'\%y\%m\%d_\%H\%M'`.nmon -s 300 -c 288 > 1>/dev/null 2>/dev/null' > > info: Promise belongs to bundle 'itsv_modify_cron_line' in file './ > nmon_cron_test.cf' near line 99 > > R: Time: Wed Jul 28 16:19:05 2021 - Bundle: do_what_i_say - Message: > cron line found > > > > can i ignore this? not sure. > > > > heres the policy code, maybe someone can look over it.... > > > > body file control > > { > > inputs => { "$(sys.libdir)/stdlib.cf" > > }; > > } > > > > bundle agent do_what_i_say > > { > > > > vars: > > > > "cron_line" string => "0 0 * * * /usr/bin/nmon -F > /var/log/nmon/`hostname`_`date +'\%y\%m\%d_\%H\%M'`.nmon -s 300 -c 288 > 1>/dev/null 2>/dev/null"; > > > > "root_cron_file" string => "/var/spool/cron/crontabs/root"; > > > > "find_anchor" string => "^.*/usr/bin/nmon -F.*$"; > > > > "file_content" > > string => readfile( "$(root_cron_file)" , inf ), > > if => not( isvariable( $(this.promiser) ) ); > > > > classes: > > > > "cron_line_found" > > expression => regcmp( $(find_anchor), > > $(file_content)); > > > > "cron_line_not_found" > > expression => not( regcmp( $(find_anchor), > > $(file_content))); > > > > files: > > > > "$(root_cron_file)" > > comment => "Promise root cron table entries", > > create => "true", > > classes => results( "bundle", "itsv_modify_cron_line" ), > > if => cron_line_found, > > perms => mog("0600","root","cron"), > > edit_line => itsv_modify_cron_line("$(find_anchor)", $(cron_line)); > > > > "$(root_cron_file)" > > comment => "Promise root cron table entries", > > create => "true", > > classes => results( "bundle", "itsv_add_cron_line" ), > > if => cron_line_not_found, > > perms => mog("0600","root","cron"), > > edit_line => itsv_add_cron_line($(cron_line)); > > > > commands: > > > > itsv_modify_cron_line_repaired|itsv_add_cron_line_repaired:: > > > > "/usr/bin/crontab" > > args => "$(root_cron_file)", > > comment => "Reread cron tables if it was edited."; > > > > reports: > > > > > > cron_line_found:: > > > > "Time: $(sys.date) - Bundle: $(this.bundle) - Message: cron line found"; > > > > cron_line_not_found:: > > > > "Time: $(sys.date) - Bundle: $(this.bundle) - Message: cron line not > found"; > > > > > > > > itsv_modify_cron_line_repaired|itsv_add_cron_line_repaired:: > > > > "Time: $(sys.date) - Bundle: $(this.bundle) - Message: reloaded cron > with file $(root_cron_file)"; > > > > } > > > > > > bundle edit_line itsv_add_cron_line ( line ) > > # @brief append lines if they don't exist > > # @param line The regular expression that the lines need to match > > { > > > > insert_lines: > > > > "$(line)" > > comment => "Append lines if they don't exist"; > > > > } > > > > > > bundle edit_line itsv_modify_cron_line ( _find, _replace ) > > # @brief modify lines matching a regular expression eg. > "^.*/usr/bin/nmon -F.*$" > > # @param _find The regular expression that the lines need to match > > # @param _replace String to substitute `_find` with > > { > > > > replace_patterns: > > > > "$(_find)" > > replace_with => value("$(_replace)"); > > > > } > > > > bundle edit_line itsv_delete_cron_line ( regex ) > > # @brief delete lines matching a regular expression eg. > "^.*/usr/bin/nmon -F.*$" > > # @param regex The regular expression that the lines need to match > > { > > > > delete_lines: > > > > "$(regex)" > > comment => "Delete lines matching the marker"; > > > > } > > > > > > bundle agent __main__ > > { > > methods: "do_what_i_say"; > > } > > > > wbr > > > > chris > > > > > > > > > > > > -- > > You received this message because you are subscribed to the Google > Groups "help-cfengine" group. > > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected]. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/help-cfengine/4eb43471-b704-4fbb-8066-a8ee2dfb40bdn%40googlegroups.com > . > > -- You received this message because you are subscribed to the Google Groups "help-cfengine" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/help-cfengine/4c743008-cb7e-4363-804b-d9fa4fad4213n%40googlegroups.com.