-   Linux - Software (
-   -   Getting a command to run on ssh/cli login ONLY (

Vanyel 02-25-2008 04:42 PM

Getting a command to run on ssh/cli login ONLY
I've got a FC8 machine that I sit and use at the console a lot, but also access remotely via ssh. Also sometimes I ssh in as another account and then su to my own account.

There's a particular command I'd like to run ONLY if I ssh into the machine as myself, or su to myself, but NOT if I sit down and have a graphical session at the console.

I'm not sure where I'd put it so it will run only on non-GUI (ssh) login or via su.

Can anybody give me an answer?

- Van

chadl 02-25-2008 05:56 PM

You can detect if you are connecting via SSH by looking for the SSH_CLIENT environmental variable in your bash startup scripts.

Checking for the display environmental variable might work for telling a GUI/Console login apart, although I am not sure of that.

Running env will list all variables that are currently set, so you can compare the different login types and find variables that can tell them apart.

Vanyel 02-26-2008 12:28 PM

Yes yes YES!!!

This is just what I was looking for. I never have to explicitly deal with my environment variables so I'd never have thought of that.

After running 'env' I realized GDMSESSION will only exist if I have logged in at the console. If I ssh in as myself or am logged in as another account (even in the GUI), then 'su - van' to myself, GDMSESSION will be undefined. That's what I need to know!

Thank you.

- Van

gatoatigrado 03-02-2008 07:44 PM

another way is to do
ssh -t <machine name> "command; <your shell, e.g. bash>"
the -t forces tty (roughly i.e. text terminal) which allows bash to work

I think this is more flexible b/c you don't have to have different local users to run different commands, and the server doesn't have to know about those users.

Vanyel 03-03-2008 10:38 AM

Not quite better for my uses, but I see other scenarios where I could use it. Another eye-opener. Thanks!

All times are GMT -5. The time now is 08:08 PM.