Looking for an ethernet OTA solution

On top of that, for this to work on an ATmega, you need to burn a modified bootloader, likely meaning this file.

All the Arduino IDE does is execute the flashing command as specified by ArduinoOTA in e.g.

Now, that uses the arduinoOTA binary, but really all this does it execute a HTTP request to push the firmware. You can also use an extra_script to do that with e.g. curl or direct Python calls. There’s some discussion on it here.

You can obtain the original arduinoOTA binary e.g. via https://downloads.arduino.cc/packages/package_index.json, such as https://downloads.arduino.cc/tools/arduinoOTA-1.3.0-windows_386.zip.