297
1.877.877.2269
BLACKBOX.COM
NEED HELP?
LEAVE THE TECH TO US
LIVE 24/7
TECHNICAL
SUPPORT
1.877.877.2269
CHAPTER 16: ADVANCED CONFIGURATION
16.2.2 EXTERNAL SCRIPTS AND ALERTS
The portmanager has the ability to execute external scripts on certain events.
When a port is opened by the portmanager
When portmanager opens a port, it attempts to execute /etc/config/scripts/portXX.init (where XX is the number of the port, for
example 08). The script is run with STDIN and STDOUT both connected to the serial port.
If the script cannot be executed, portmanager executes /etc/config/scripts/portXX.chat via the chat command on the serial port.
When an alert occurs on a port
When an alert occurs on a port, portmanager attempts to execute /etc/config/scripts/portXX.alert (where XX is the port number, for
example 08).
The script is run with STDIN containing the data which triggered the alert, and STDOUT redirected to /dev/null, not to the serial port.
If you wish to communicate with the port, use pmshell or pmchat from within the script.
If the script cannot be executed, the alert will be mailed to the address configured in the system administration section.
When a user connects to any port
If a file called /etc/config/pmshell-start.sh exists it is run when a user connects to a port. It is provided 2 arguments, the Port number
and the Username. Here is a simple example:
</etc/config/pmshell-start.sh>
#!/bin/sh
PORT="$1"
USER="$2"
echo "Welcome to port $PORT $USER"
</etc/config/pmshell-start.sh>
The return value from the script controls whether the user is accepted or not, if 0 is returned (or nothing is done on exit as in the
above script) the user is permitted, otherwise the user is denied access.
Here is a more complex script which reads from configuration to display the port label, if available, and denies access to the root
user:
</etc/config/pmshell-start.sh>
#!/bin/sh
PORT="$1"
USER="$2"
LABEL=$(config -g config.ports.port$PORT.label | cut -f2- -d' ')
if [ "$USER" == "root" ]; then
echo "Permission denied for Super User"
exit 1
fi
if [ -z "$LABEL" ]; then
echo "Welcome $USER, you are connected to Port $PORT"