How about this circuit I built to keep foxes and badgers out of my chicken run?
A 555 timer, configured to produce the waveform shown, drives a pseudo-Darlington pair of transistors that pulses a standard ignition coil. The voltage induced will jump about 12mm in the dry air of the house - several kV, I bet. The three-second dead time is more than enough to allow the shocked animal to let go and bugger off.
I had to remove the final 1N4007 across the coil primary, as the circuit would not work with it - perhaps it was too slow. Maybe a faster signal diode would be better here? All the diodes are 1N4007 because... I bought a large pack of them.
I had this running on a motorcycle battery for a good year, charging it once a week. Doubtless someone on here could offer some improvements - I was going to change the transistors for a single MOSFET, but that 2N3055 seems bombproof. I'm not sure how well the coil will hold up over time - they don't like long-term use with an open secondary, I'm told.
Here in the UK, there is a wide range of electric fence energisers available to buy, but they are expensive. I think a lot of the cost is related to safety testing and RF emissions certification.