Difference between revisions of "Exit codes of gLExec"

From PDP/Grid Wiki
Jump to navigationJump to search
 
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Upon successful execution of a program, the return value from gLExec will simply be the '''return value of the command''' that was executed.
+
Both the gLExec tool itself and the executed command can return there own error codes. Since version '''0.6.0-1''' we've consolidated the error codes of gLExec to a minimal set to allow gLExec users to be able to distinguish between the error codes of gLExec and the error codes of the executed command.
  
 +
For older versions of gLExec, versions before '''0.6.x-y''', like '''0.5.42-1''', the error codes of gLExec are not deterministic and the way of distinguishing between the executed command and gLExec is not support. The 0.5.x versions of gLExec are therefore being phased out soon and advise all site administrators to install 0.6.8-3 or newer to provide the best support for the user community.
  
The error code that glexec returns:
+
== Upon Success ==
 +
 
 +
The exit code of gLExec will simply be the '''return value of the command''' that was executed.
 +
 
 +
== On Error ==
 +
 
 +
The error code that gLExec* returns:
  
 
201 - client error, which includes:  
 
201 - client error, which includes:  
Line 26: Line 33:
 
* application called by glexec exit with code 201, 202, 203 or 204
 
* application called by glexec exit with code 201, 202, 203 or 204
  
 +
126 - Shell returns that the executable can’t be executed:
 +
* This error code is triggered when the given command is unable to be executed. This could be due to execution permissions problems, ACL problem, or other shell related reasons for not executing.
  
 +
128+n - Child exited due to signal n.
  
Upon successful execution of a program, the return value from gLExec will simply be the return value of the program that was executed. Otherwise, gLExec quits with the following limited range of return values:
+
== Example ==
 
 
 
201 - Client error:
 
 
 
 
This error code is triggered when the user (caller of gLExec) has to change something in order for gLExec to be able to succeed. Some example situations: the input files (like proxy certificates) might have the wrong permissions or do not exist; the executable to be executed doesn’t exist or has unacceptable file permissions.
 
 
  
202 - Internal gLExec error:
+
The following sequence will print the output of /bin/ls and echo the shell exit code of the previous command.
 
  
This error code has to be handled by the system administrator of the machine. This might be due to wrong permission bits on the configuration file, initialization errors of LCAS and/or LCMAPS or other system specific errors that can only be addressed by somebody with sufficient rights on the machine.
+
bash $: /opt/glite/sbin/glexec /bin/ls;
+
echo $?
  
203 - Authorization error:
+
This works on most to all shells. We've noticed that SASH (Stand-alone shell) doesn't keep the error code in the $? parameter when the $? is not used on the same line. For SASH compatibility use the following construction:
 
  
Everything went ok, but the user is not authorized. This could be triggered because the calling process was not in the white list and therefore not privileged to use gLExec. The other reason is that LCAS and/or LCMAPS failed to authorize the (real) user and gain an account mapping.
+
sash $: /opt/glite/sbin/glexec /bin/ls; echo $?
 
 
 
204 - Child return value overlap:
 
 
 
 
This error code is triggered when gLExec is in linger mode (activated by default) and when the called child process returns an exit code that overlaps with one of the error code numbers 201, 202, 203 and 204.
 
 
 
 
126 - Shell returns that the executable can’t be executed:
 
 
  
This error code is triggered when the execv() call failed to execute the command, because of permission, execution or system problems found during the call for the executable that was tried to be set up. The shell code is not caught, but forwarded as an error code from the actual child process.
+
More information can be found in the [[Man pages of gLExec]].

Latest revision as of 13:18, 22 September 2011

Both the gLExec tool itself and the executed command can return there own error codes. Since version 0.6.0-1 we've consolidated the error codes of gLExec to a minimal set to allow gLExec users to be able to distinguish between the error codes of gLExec and the error codes of the executed command.

For older versions of gLExec, versions before 0.6.x-y, like 0.5.42-1, the error codes of gLExec are not deterministic and the way of distinguishing between the executed command and gLExec is not support. The 0.5.x versions of gLExec are therefore being phased out soon and advise all site administrators to install 0.6.8-3 or newer to provide the best support for the user community.

Upon Success

The exit code of gLExec will simply be the return value of the command that was executed.

On Error

The error code that gLExec* returns:

201 - client error, which includes:

  • no proxy is provided
  • wrong proxy permissions
  • target location is not accessible
  • the binary to execute does not exist
  • the mapped user has no rigths to execute the binary when GLEXEC_CLIENT_CERT is not set

202 - system error

  • glexec.conf is not present or malformed
  • lcas or lcmaps initialization failure, can be obtained moving the lcas/lcmaps db files.

203 - authorization error

  • user is not whitelisted
  • local lcas authorization failure
  • user banned by the SCAS server
  • lcmaps failure on the scas server
  • SCAS server not running
  • network cable unplugged on the SCAS server host.

204 - exit code of the called application overlap with the previous ones

  • application called by glexec exit with code 201, 202, 203 or 204

126 - Shell returns that the executable can’t be executed:

  • This error code is triggered when the given command is unable to be executed. This could be due to execution permissions problems, ACL problem, or other shell related reasons for not executing.

128+n - Child exited due to signal n.

Example

The following sequence will print the output of /bin/ls and echo the shell exit code of the previous command.

bash $: /opt/glite/sbin/glexec /bin/ls;
echo $?

This works on most to all shells. We've noticed that SASH (Stand-alone shell) doesn't keep the error code in the $? parameter when the $? is not used on the same line. For SASH compatibility use the following construction:

sash $: /opt/glite/sbin/glexec /bin/ls; echo $?

More information can be found in the Man pages of gLExec.