Only one option can be set with PSSH_OPTIONS
GoogleCodeExporter opened this issue · comments
Google Code Exporter commented
What steps will reproduce the problem?
1. export PSSH_OPTIONS="IdentityFile=/var/foo StrictHostKeyChecking=no"
2. parallel-ssh -i -H localhost env
=> [FAILURE] localhost Exited with error code 255
What is the expected output? What do you see instead?
I would expect to see the output of the 'env' command.
What version of the product are you using? On what operating system?
Ubuntu Oneiric, pssh 2.2.2-0ubuntu1
Please provide any additional information below.
The array holding the ssh command & arguments looks like this:
['ssh', 'localhost', '-o', 'NumberOfPasswordPrompts=1', '-o',
'SendEnv=PSSH_NODENUM', '-o', 'IdentityFile=/tmp/bar StrictHostKeyChecking=no']
You can see the PSSH_OPTIONS are translated to a single -o argument.
There's probably more to it than just splitting the string at the space (what
if there is an intended space, like IdentityFile=/home/x/my documents/foo), so
I don't have a meaningful suggestion how to do it better.
Original issue reported on code.google.com by ka...@vervaeke.info
on 27 Mar 2012 at 6:55
Google Code Exporter commented
Additionally, setting PSSH_OPTIONS breaks parallel-rsync:
in do_prsync, you get
ssh => ['ssh', '-o', ['IdentityFile=/home/karel/.ssh/id_rsa_whirr']]
At this line, you get an error because ssh[2] is a list instead of a string:
cmd = ['rsync', '-e', ' '.join(ssh)]
Original comment by ka...@vervaeke.info
on 27 Mar 2012 at 8:15
- Added labels: ****
- Removed labels: ****
Google Code Exporter commented
It looks like in comment #1, you describe a legitimate bug. As for the
PSSH_OPTIONS, that's mostly just a weakness in using environment variables for
specifying options. In fact, the environment variables aren't described in the
man page, in the hope of subtly discouraging their use.
Using the command-line arguments is the recommended way to set ssh options. The
man page points out a tip for frequently specified options:
If you have a set of hosts that you connect to frequently with specific
options, it may be helpful to create an alias such as:
alias pssh_servers="pssh -h /path/to/server_list.txt -l root -A"
Original comment by amcna...@gmail.com
on 28 Mar 2012 at 4:00
- Added labels: ****
- Removed labels: ****
Google Code Exporter commented
Apparently my pssh package provides two man pages. One for 'pssh' and one for
'parallel-ssh'. The latter one does mention the environment variables. It could
be a packaging problem by whoever produced the ubuntu package.
I already have functions for calling pssh.
function mypssh() {
role=$1
shift
pssh -h /path/to/${role}.txt [someotherargs] $@
}
I was just looking for the most elegant solution. I guess I'll using -O and -x
to control ssh args.
Original comment by ka...@vervaeke.info
on 29 Mar 2012 at 7:06
- Added labels: ****
- Removed labels: ****
Google Code Exporter commented
That's a weird packaging issue. I know that there are some problems because
more than one package uses the name pssh.
I think your functions for calling pssh are far more elegant than environment
variables. So, in my opinion, you're already on the right track.
Original comment by amcna...@gmail.com
on 31 Mar 2012 at 6:04
- Added labels: ****
- Removed labels: ****