Is there a way to get the current rendering frame number?
Whats not really clear is how you mean 'get', since Blender isn't actively responding to events for example. Nevertheless, there are ways to do this.

Use the "Placeholder" render option

This writes an empty file, before rendering starts, other tools can check for these files to see which file is currently rendering.

With users and file ownership, its possible to check the file owner to see which system created the file.

Of course its possible Blender is interrupted, so, you may end up needing some supervision scripts to ensure the state is clean before starting.

Use Python "Handlers"

Blender has events you can subscribe to using bpy.app.handlers.
This is a catch-all since Python is very flexible.

In this case I think you would want the render_pre handler, which you can run when immediately before rendering.

eg:

import bpy
from bpy.app.handlers import persistent

@persistent
def render_handler(scene):
    filepath_to_render = scene.render.frame_path()
    print("Render Handler:", bpy.data.filepath, filepath_to_render)

    # access a file, log information over the network... whatever :)

bpy.app.handlers.render_pre.append(render_handler)


Inspect Blender's Output

Blender prints render information to the stdout,

You can log this to a file, and inspect the file for lines formatted as follows:

Fra:1 Mem:15.47M (0.00M, Peak 15.47M) | Time:00:00.00 | Preparing Scene data
Fra:1 Mem:15.47M (0.00M, Peak 19.87M) | Time:00:00.14 | Sce: Scene Ve:8 Fa:6 La:0


Even though this isn't 100% fool proof (its possible some Python script prints Fra:123), its easy enough to make a regular expression to parse the frame with reasonable certainty that its not mistaking output from elsewhere.

This is a simple example of a script that extracts the frame from a log-file, eg:

#!/usr/bin/env python3

"""
Get the current rendering frame from Blender's text output, eg:

python3 frame_from_log.py /path/to/file.log
"""

import sys
LOGFILE = sys.argv[-1]

frame = None
with open(LOGFILE, 'rb') as f:
    lines = f.readlines()
for l in reversed(lines):
    if l.startswith(b'Fra:'):
        frame = int(l[4:].split()[0])
        break
    elif l.startswith(b'Saved:'):
        # we're not currently rendering if it saved, early exit!
        break

if frame is not None:
    print("Frame found:", frame)
else:
    print("No frame found")


You may want to optimize it only to read the last lines of the file (for very long logs). but its a start.