Secure Shell
Thanks and Suggestions Feb 28 2009 04:03AM
Chris Mirchandani (novashadow msn com) (2 replies)
Re: Thanks and Suggestions Mar 01 2009 02:44PM
Balakrishnan B (bala linux gmail com)
Re: Thanks and Suggestions Feb 28 2009 11:28AM
Robert Hajime Lanning (robert lanning gmail com) (2 replies)
RE: Thanks and Suggestions Mar 02 2009 03:09AM
Chris Mirchandani (novashadow msn com) (2 replies)
Re: Thanks and Suggestions Mar 02 2009 09:34PM
Greg Wooledge (wooledg eeg ccf org)
Re: Thanks and Suggestions Mar 02 2009 08:44AM
Robert Hajime Lanning (robert lanning gmail com)
On Sun, Mar 1, 2009 at 7:09 PM, Chris Mirchandani <novashadow (at) msn (dot) com [email concealed]> wrote:
>
> Thank you Mr. Lanning,
>
> I tried your suggestion, see below, and it does work like I want, but I have 2 questions.
>
>> ssh joe (at) example (dot) com [email concealed] "sleep 1000 < /dev/null> /dev/null 2>&1 &"
>
> 1) I see a lot of scripts use the form /dev/null> /dev/null 2>&1 rather than < /dev/null
> > /dev/null 2>&1. Why don't you want/need the latter in scripts?

This actually depends on the command running.

< /dev/null
This redirects STDIN (usually the keyboard) to read from /dev/null.
/dev/null is a special
file (called a device file) that gives the End Of File marker every
time it is read. If you
want the command to read from a file, then you replace "/dev/null"
with /path/to/file.
>/dev/null
This redirects STDOUT (usually the screen) to /dev/null. Anything
written to /dev/null
is just discarded. So, if you want to save the output to a file,
then you replace "/dev/null"
with /path/to/output/file. You do have to be careful, as the ">"
operator truncates the file
when it opens it for writing.
x>&y
This copies file descriptors.
STDIN is file descriptor 0
STDOUT is file descriptor 1
STDERR is file descriptor 2
So, 2>&1 copies file descriptor 1 to file descriptor 2, thus makes
STDERR goto the same
place as STDOUT.
If you want STDERR to goto a different file than STDOUT, then you can use
"2> /path/to/error/file"

If you don't use "< /dev/null" then the command will still have the
terminal open for reading.
Sometimes this is just fine, as the command does not do anything with
the terminal (ie. read
from it.) Sometimes it isn't, if the command tries to read from
STDIN, it will interrupt your
shell.

If you want to close your shell completely, then you will need to
redirect STDIN for
the command, as the terminal will disappear (if it is a network or
Xwindow session.) In this
case, you will also want to use "nohup" to run the command. This will
set the process flag
to ignore the HangUp (SIGHUP) signal, that the shell sends to all it's
child processes upon
exit. Commands that do not specifically handle SIGHUP will default to
exiting upon
receiving the HUP signal.

In Linux, you can get a list of all available POSIX Signals via the
"kill -l" command or
looking in /usr/include/linux/signal.h.

> 2) If I enable logging for my remote ssh command, which is an ssh command, will
> < /dev/null> /dev/null 2>&1 change logging in any way?

This all depends on how logging is implemented.

If it uses Syslog or writes directly to a file, no. If it logs to
STDOUT or STDERR, then yes.

See above for what happens to STDOUT and STDERR, if logging is done
via either of
those.

If it uses Syslog or writes directly to a file, then the log will be
on the remote machine,
only.

--
And, did Galoka think the Ulus were too ugly to save?
-Centauri

[ reply ]
RE: Thanks and Suggestions Mar 01 2009 04:44AM
Chris Mirchandani (novashadow msn com) (1 replies)
Re: Thanks and Suggestions Mar 01 2009 11:51PM
Robert Hajime Lanning (robert lanning gmail com)


 

Privacy Statement
Copyright 2010, SecurityFocus