From the service check definition. If you re-read the last part of my previous post, the plugin receives its input arguments when nagios runs it - $ARG1$, $ARG2$....$ARGN$ are defined in the command object "command_line" and they map directly to the service object definition variables after each ! delimiter in the "check_command"...
Here it is in colour...
...of course as always TIMTOWTDI... As a for instance if you had a plugin like check_http or check_snmp with multiple uses you wouldn't want to go and create lots of different command object definitions for each way you might implement it, so you just have the one and use a singe argument in the command object and a single delimiter followed by multiple argumens in the service object... like if you have check_foo and it can either check for thing1 or thing2 with various 'thing' purpose-relevant arguments, you just define check_foo like
you can then use it in different service objects in different ways... like
Then, when nagios checks service FOO-thing1 for remotehostA it runs check_foo like this
//check_foo -I -x thing1 -y tribbles
and for FOO-thing2 for remotehostB it runs check_foo like this
//check_foo -I -x thing2 -z rhubarb
Hope that's a bit clearer now.