Local command task
A local command task will execute a command directly on the server where CTFreak is installed.
For those who need to schedule high-frequency command execution, local command task may be more suitable than command task, as it avoids the constraints of an SSH connection and the network.
Given that local commands have write access to CTFreak configuration files, only an administrator can create this type of task.
Here is an example:
echo "Hello!"
(when CTFreak is installed on a Unix server)Write-Host 'Hello!'
(when CTFreak is installed on a Windows server)
Prerequisites for executing a local command on a Windows host server
Use Unicode UTF-8 for worldwide language support
On the host server, go to:
Settings > Time & Language > Language & region > Administrative language settings > Administrative tab > Change system locale button
Enable “Beta:Use Unicode UTF-8 for worldwide language support.”
Install Powershell >= 7.2
CTFreak requires a recent version of powershell to correctly retrieve log content (especially error outputs).
Task characteristics
In addition to the common task characteristics, here are those specific to local command tasks.
Extended scheduling syntax
The cron expression used to schedule a local command accepts an optional sixth field, allowing you to define a granularity to the second.
For example, to execute a task every 30 seconds, you can use this expression:
30 * * * * *
Use shell
By default, a shell (bash on UNIX, powershell >=7.2 on Windows) is launched at each execution to interpret a command line.
If the shell is disabled, the command line is replaced by the program to be launched and its arguments.
Log output
You can specify whether you wish to keep execution logs:
- Systematically
- Only in the event of failure or abort
- Never
Using project constants
Project constants can be used as environment variables prefixed with CPC_
(for CTFreak Project Constant).
Here’s an example using a project constant named NUMBER_OF_RETENTION_DAYS
in a bash command line:
clean-backup --retention-period $CPC_NUMBER_OF_RETENTION_DAYS
If you later decide to increase the retention period of your backups, you’ll only need to modify the constant value to affect all cleanup commands referring to it.
Using task parameters
Like project constants, task parameters can be used as environment variables prefixed with CTP_
(for CTFreak Task Parameter).
Here’s an example using a text task parameter named FIRST_NAME
in a bash command line:
echo "Hello $CTP_FIRST_NAME !"
Task parameters values are converted to text format when assigned to an environment variable.
The following conversion rules are applied according to parameter type:
- Checkbox → Checked:
true
, Unchecked:false
- Date → Formatting with the
YYYY-MM-DD
pattern - Selector, Integer and Text → No specific formatting