Purge by python and expect
    Gaute Amundsen 
    gaute at pht.no
       
    Sun Nov 12 16:16:41 CET 2006
    
    
  
Ok, I gott there first I guess :)
Quick & dirty, more like sketches in fact, 
so please post your improvements, and suggestions.
Regards
Gaute Amundsen
By expect:
#!/usr/bin/expect --
set timeout 5
log_user 0
spawn -noecho telnet localhost 90
#spawn telnet localhost 90
expect {
"Escape character is '^]'." {
    send -- "url.purge .*\r";
    expect -re "(\\d+ \\d+)(.*)PURGE"
    puts $expect_out(1,string)
    close;
    puts "DONE\r" }
"Connection refused" {
    puts "FAILED\r"}
}
by python:
#!/usr/bin/python
def by_http():
    # not complete, need to take a list of urls, and possibly a host as 
paramertes
    import httplib
    #(scheme, host, path, params, query, fragment ) = 
urlparse.urlparse(objecturl)
    conn = httplib.HTTPConnection("cache.site.com")
    conn.request("PURGE", "/foo/bar/baf")
    r1 = conn.getresponse()
    conn.close()
    return r1.status, r1.reason
def by_telnet():
    # deletes everything from all hosts. dont know if host matching is 
possible
    import telnetlib
    import socket
    #tn.set_debuglevel(10)
    try:
        tn = telnetlib.Telnet('localhost',90)
    except socket.error, e:
        return e[1]
        #socket.error: (111, 'Connection refused')
    tn.write("url.purge .*\n") # purge documets matching regexp
    (a,b,c) = tn.expect(["\d+ \d+"], 2)
    tn.close()
    return b.group(0) + "\nDONE"
    
    
More information about the varnish-misc
mailing list