Forum Discussion

Andre_Muniz's avatar
Andre_Muniz
Icon for Nimbostratus rankNimbostratus
Jul 01, 2011

Schedule iRule

Im new in iRule. Im using a iRule and its ok, but i need to schedule this. I need that iRule to be enabled only a certain part of the day. How can I do that ? Thanks

 

  • Hi Steve,

    If you do not want to set the flag you can move the event from CLIENT_ACCEPTED to HTTP_REQUEST (First Example), but if you do want to use a variable you could use the Second Example).

    The first example is more efficient (sorry...should have just told you to change the event, but I thought I would show you both).

    I would suggest the first example.

     
    when RULE_INIT {
     Start of maintenance window in YYYY-mm-dd HH:MM format
    set static::start_date "2012-10-12 17:20"
    
     End of maintenance window in YYYY-mm-dd HH:MM format
    set static::end_date "2012-10-12 17:22"
    
     Convert start/end times to seconds from the epoch for easier date comparisons
    set static::start [clock scan $static::start_date]
    set static::end [clock scan $static::end_date]
    }
    when HTTP_REQUEST {
    set now [clock seconds]
    if { $now > $static::start and $now < $static::end } {
    HTTP::redirect "http://www.google.com"
    }
    }
    
    ------------------------------------------------------------------------------------------------------------
    
    when RULE_INIT {
     Start of maintenance window in YYYY-mm-dd HH:MM format
    set static::start_date "2012-10-12 17:30"
    
     End of maintenance window in YYYY-mm-dd HH:MM format
    set static::end_date "2012-10-12 17:32"
    
     Convert start/end times to seconds from the epoch for easier date comparisons
    set static::start [clock scan $static::start_date]
    set static::end [clock scan $static::end_date]
    }
    when CLIENT_ACCEPTED {
    set now [clock seconds]
    if { $now > $static::start and $now < $static::end } {
    set maintflag "1"
    }
    else { 
    set maintflag "0"
    }
    }
    when HTTP_REQUEST {
    if { $maintflag == 1 } {
    HTTP::redirect "http://www.google.com"
    }
    }
    
  • the first example is exactly what i have on my LTM ver 10.2.4. however the redirect piece isn't working at all, i tested the url with a simple redirect and that works fine.

    
    when RULE_INIT {  Start of maintenance window in YYYY-mm-dd HH:MM format set static::start_date "2012-10-12 03:50"  End of maintenance window in YYYY-mm-dd HH:MM format set static::end_date "2012-10-12 04:55"  Convert start/end times to seconds from the epoch for easier date comparisons set static::start [clock scan $static::start_date] set static::end [clock scan $static::start_end] } when HTTP_REQUEST { set now [clock seconds] if { $now > $static::start and $now < $static::end} { HTTP::redirect "http://www.orderkeystone.com/efiles/systemdown.html" } } 
    

  • So my man Justin Clark at support got me hooked up with the correct syntax. I was running out of time to get this working....

     when RULE_INIT {  Start of maintenance window in YYYY-mm-dd HH:MM format set static::start_date "2012-10-12 16:50"  End of maintenance window in YYYY-mm-dd HH:MM format set static::end_date "2012-10-12 17:55"  Convert start/end times to seconds from the epoch for easier date comparisons set static::start [clock scan $static::start_date] set static::end [clock scan $static::end_date] } when HTTP_REQUEST { set now [clock seconds] if { $now > $static::start and $now < $static::end} { HTTP::redirect "http://www.orderkeystone.com/efiles/systemdown.html" } } 

    also the LTM uses military time, i ddin't know that, so i had to adjust the time format. greatly appreciated the help, i've learned a TON from this experience.

  • When I apply Steve's irule (obviously modified for my own error page) I get a page reset.

     

     

    Doesn't matter if it's in the scheduled time zone or not. I am still on version 9.4.8, could this likely be the cause?
  • Arie's avatar
    Arie
    Icon for Altostratus rankAltostratus

    If there's another HTTP:respond (including redirect) that is also activated on the same connection you'll get an error. Are you seeing an error in the logs?