Programming Service Scripts |
Top Previous Next |
A script file must be specified when running Robo-FTP as a service. Special considerations apply when programming a script to be used in a service:
Continuous looping
A typical deployment of Robo-FTP as a service uses a script that runs in a continuous loop. One common way of doing this is with the GOTO and PAUSE commands, as shown in the following example:
:loop ;; "loop" label
FTPLOGOFF ;; main script contents: download files from "mysite" FTPLOGON "mysite" CD "C:\data" RCVFILE "*"
PAUSE /for=300 ;; wait 5 minutes before the next round of downloads GOTO loop ;; jump back to the "loop" label above
Another common design for service scripts uses the GOTO and CRON commands to suspend processing until it is time to awaken to perform one or more tasks at a specified time or date. Once the task is complete, the script loops back and is suspended until the next period of activity, as in the following example:
:loop
CRON ;; suspend execution until the next task PERFORM %nextcmd ;; is ready to be performed
GOTO loop
Service scripts are also often designed for real-time processing so they are always looking for something to do. For example, the hot send and hot receive styles of service script constantly poll a folder for new files and then react accordingly when a new file is discovered.
See also: CRON, Control flow
Permissions File and folder permissions must be considered when deciding which Windows account will be used to run the service. For example, the account used must have permission to log in as a service. Permissions are usually to blame if a script works fine when you run it in the main console windows but fails when launched as a service.
Network Access The default service account is the built-in LOCAL SYSTEM account but it does not have access to network resources. Use a local or domain account with sufficient permissions (for example, NETWORK SERVICE) if your script reads or writes files on the LAN. Microsoft recommends using a UNC path instead of a mapped drive to access network files from a service. See: http://msdn.microsoft.com/en-us/library/windows/desktop/ms685143(v=vs.85).aspx. Therefore, if DOSCMD seems like a good solution to an automation challenge involving a network resource you should consider Microsoft's warnings and any potential workarounds before deciding to map a drive in a Robo-FTP service script.
Error handling The IFERROR command is a powerful tool in service scripts designed for unattended execution. Use this command to catch and recover from potential failures including network outages and unexpected changes to login credentials or permissions. Many script developers choose to send an automated email message alerting support staff when an unrecoverable error occurs.
Important It is strongly recommended that you exhaustively test any script file that you intend to run as a service in the normal Robo-FTP console window before using it as a service.
Monitoring and logging Unlike other Windows services, a Robo-FTP service does not log all results and errors to the System Event Log. Instead, you should use the LOGMSG, DASHBOARDMSG, or LOGNTEVENT script commands to monitor operation of a Robo-FTP service. Do not use commands like ASK and PROMPT because interactive commands are not permitted in service scripts. If you plan to install the service from the command line then the script should include the SRVNAME command so that the Monitor utility can connect to it.
Logging is an importing tool for diagnosing problems with service scripts because they are typically run without the normal Robo-FTP console window interface. The LOG, TRACELOG and SESSIONLOG script commands are used to control logging.
Halting a service Typically a running Robo-FTP service will remain active until the script executes the EXIT command. A service may be stopped manually using the Windows Service Manager, the Service Installer or the Enterprise Dashboard.
If your script logic contains steps that must not be interrupted, you can design it to use a special shutdown script for orderly termination.
See also: Installing Robo-FTP as a Service, Working with Network Drives |