Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

Does anyone know of a way to detect that a shell script is running within ARD (vs. running the same script locally on the machine)?

I looked at detecting that we are running in interactive mode - that fails, since both are noninteractive.

I'm looking at the $0 variable, which looks more promising - it returns -bash when run from the command line, returns the name of the script when running within a script run locally, and returns /bin/bash when run via ARD. However - I'm not certain whether those effects can be counted on.

Does anyone have any input on this?

share|improve this question

1 Answer 1

Why not pass in an extraneous argument when you issue a command from ARD.

It's more a workflow than a system generated tag, but ARD likely sends the same command to launchd as the open -a command would so that level of indirection means that you can't depend on the typical ppid from ps -ef to find the process that forked a specific script.

Why not push a wrapper script to all your machines and use that wrapper script to log the arguments to console? Then ARD can call the wrapper script.

Something like a script stored in /usr/local/bin/remote would work well:

#!/bin/bash
echo "This script was called remotely and is about to run another script."
/bin/bash $*
echo "This script has just run another script."

You can get all fancy with parsing the arguments or using logger and/or date/time stamping or recording which computer did the sending, but this is a common way to track execution of other scripts.

share|improve this answer
    
Thanks, I may resort to that - though I had been hoping that I could seamlessly use the same script in both places - it needs to act differently in each place. I'm looking through the environment variables, and may have found a couple options that may be sufficient for my needs (COLUMNS or TERM) - though I'm still interested in a proper method, if it exists... –  Scot Dec 19 '12 at 5:37
    
@Scot Here's an example of parsing arguments from a shell script if you're not familiar with that side of scripting. –  bmike Dec 19 '12 at 23:25
    
Thanks again. For the purposes of this script, I wanted to have the logic built-in to the script itself, so I ended up using the environment variable TERM (it is dumb when running a script within ARD, and xterm-256color when running locally. So far this has been a good enough hook... –  Scot Dec 21 '12 at 8:11

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.