6

I run

ssh root@myhost "sh -x" < myremotecommands.sh

where myremotecommands.sh contains:

#!/bin/sh
sudo su
apt-get update
sudo su -l -p jenkins
whoami

however the command whoami returns 'root'. I need to be user jenkins to perform some installations.

How can I switch to the user jenkins in the middle of the script ?

Jonathan Leffler
  • 730,956
  • 141
  • 904
  • 1,278
user77115
  • 5,517
  • 6
  • 37
  • 40

3 Answers3

10

You just have to use "su" command with "-s /bin/bash" argument. It´s needed because jenkins user was not supposed to be used interactively, so it doesn´t have the bash defined.

su jenkins -s /bin/bash

After this, the "whoami" command will report you as "jenkins" user.

Fernando Vieira
  • 3,177
  • 29
  • 26
2

Use $USER. That will give you the username you logged in as. Whoami returns the user you're currently operating as.

buildsucceeded
  • 4,203
  • 4
  • 34
  • 72
1

Problem solved:

#!/bin/sh
sudo su
apt-get update
su jenkins <<HERE
whoami
echo usr=$USER
HERE

will output:
jenkins
usr=root

Source: http://www.daniweb.com/software-development/shell-scripting/threads/14498

user77115
  • 5,517
  • 6
  • 37
  • 40