Nuno
Nuno

Reputation: 3622

Run multiple SSH commands in the same SSH session, fail/exit on first error

I have a step in my Jenkins file, like this:

withCredentials([
    file(credentialsId: 'mysrv-key', variable: 'keyfile'),
    string(credentialsId: 'mysrv-host', variable: 'srvhost')
]) {
    sh '''ssh -v -o StrictHostKeyChecking=no -i ${keyfile} 
root@${srvhost} /bin/bash << EOF
  echo "0"
  grep "inexisting-text" /path/to/somefile
  echo "1"
EOF'''
}

This experiment is to see if grep returning 1 would fail the sh step, but doesn't seem to. "1" is also printed in the output.

Is it possible to run several commands through SSH, but without having to run multiple ssh commands, so that we don't have to open a new shell session for every single of them?

Something equivalent to running sh, but all wrapped in an SSH session. Similar to how we do withCredentials, and run stuff under that block.

Upvotes: 0

Views: 670

Answers (1)

Sawashiro Miyuki
Sawashiro Miyuki

Reputation: 11

It's not obvious what are you asking. Your question (highlighted in bold in your post) is:

Is it possible to run several commands through SSH, but without having to run multiple ssh commands, so that we don't have to open a new shell session for every single of them?

but before that question you demonstrate that you already run several commands (grep and echo) in a single SSH session

If your goal is to prevent further commands if grep command fails then you have to add set -o errexit (or set -e) to your EOF block.

Upvotes: 1

Related Questions