I’m pretty sure I’ve seen other references describing these commands but I can’t find them now. However, per the app_rpt source code, available at: https://github.com/AllStarLink/Asterisk/blob/master/asterisk/apps/app_rpt.c, the following explanation is given:
Usage: rpt fun <nodename> <command>
Send a DTMF function to a node
Usage: rpt cmd <nodename> <cmd-name> <cmd-index> <cmd-args>
Send a command to a node.
i.e. rpt cmd 2000 ilink 3 2001
Adding to that, “rpt fun” is identical to using a DTMF function over the air. This requires the exact same configuration of defining the DTMF string and assigning it the proper command in rpt.conf. In contrast, “rpt cmd” directly runs commands and does not require that configuration beforehand.
As I mentioned in the post Tim referenced, using “rpt cmd” can provide security in some cases. If not needed, not defining a DTMF string for a command prevents anyone with over the air access and DTMF capability from running that command. In this case, either using cron or manually via the command line through ssh, etc. , the ability to run that command is only available to properly authenticated users when using “rpt cmd”.