IBM Aspera High-Speed Transfer Server (HSTS) includes embedded support for executing Lua scripts in response to transfer events. Learn more about Lua at https://www.lua.org/.
HSTS makes information available about the transfer session and file events within a session. This allows you to record information about transfers or even automate processing against files as they arrive through your Aspera server.
Lua support supplants the now-deprecated aspera-prepost shell script option in older versions of HSTS.
Scripts can be executed based on five different event types during the life of a transfer:
In this example, we will write basic information about a session into a separate text file on the HSTS host. Note that there is a function lua_log available natively that will create additional log entries in your native Aspera/ascp log. This example will create a separate simplified log outside of the Aspera logs, which would be consumed by users, other processes, or fed into another process.
We will be logging transfers that come in through one user – the “xfer” user – into a local file. Scripts can be run system-wide, or can be user-specific.
Create a file at /home/xfer/transferdone.lua with these contents:
file = io.open(“/home/xfer/transfer.log”, “a”)
io.output(file)
io.write(“———————————————–\n”)
io.write(“Transfer Session Complete\n”)
io.write(“Client IP Address: ” .. env_table[“peer_ip”] .. “\n”)
io.write(“Direction: ” .. env_table[“direction”] .. “\n”)
io.write(“Number of Files: ” .. env_table[“filecount”] .. “\n”)
io.write(“Total Bytes Transferred: ” .. env_table[“transfer_bytes”] .. “\n”)
io.close(file)
We want this script to run on the Transfer Stop event, and only for the xfer user.
/opt/aspera/bin/asconfigurator -x “set_user_data;user_name,xfer;lua_session_stop_script_path,/home/xfer/transferdone.lua”
The changes will be shown within the appropriate section in the aspera.conf file.
<user>
<name>xfer</name>
<file_system>
<access>
<paths>
<path>
<absolute>/data</absolute>
</path>
</paths>
</access>
</file_system>
<transfer>
<lua_session_stop_script_path>/home/xfer/transferdone.lua</lua_session_stop_script_path>
</transfer>
</user>
After running two transfer sessions, we see the new log at /home/xfer/transfer.log.
# cat /home/xfer/transfer.log
———————————————–
Transfer Session Complete
Client IP Address: 192.168.122.1
Direction: receive
Number of Files: 1
Total Bytes Transferred: 10485760
———————————————–
Transfer Session Complete
Client IP Address: 192.168.122.1
Direction: receive
Number of Files: 31
Total Bytes Transferred: 5641941
The Federal Trade Commission is now actively investigating OpenAI, Anthropic, and other AI companies over…
Remote and hybrid work have changed how businesses collaborate. Employees can now access company resources,…
In May 2026, a Google Gemini model accessed the systems of three real companies during…
Between June 2024 and July 2025, a Chinese state-sponsored threat group compromised or attempted to…
TL;DR: The OpenAI-Hugging Face breach wasn't a sci-fi scenario. AI agents used credential discovery, lateral…
In February 2025, cybersecurity firm Hudson Rock published research that cut through a lot of…