Unable to use sudo password in script

164 Views Asked by At

I am trying to write a bash script to login to ssh and then run docker login command as sudo.

SSH login works fine , but issue is with sudo login. Command:

sshpass -p password ssh -oStrictHostKeyChecking=no -oServerAliveInterval=120 [email protected] -p 2222 "echo password | sudo -S - docker login -u=myuser -p='dockerpa#$%' dockerhub.com/docker-repo"

Also tried

sshpass -p password ssh -tt -oStrictHostKeyChecking=no -oServerAliveInterval=120 [email protected] -p 2222 "echo password | sudo -S - docker login -u=myuser -p='dockerpa#$%' dockerhub.com/docker-repo"

Error being:

[sudo] password for myser: sudo: docker: command not found

If I execute sudo docker login -u=myuser -p='dockerpa#$%' dockerhub.com/docker-repo directly on the remote server, it works fine.

What am I missing here ? Thank you.

1

There are 1 best solutions below

4
Claudiu T On

My 2 cents here but shouldn`t you use ?

sshpass -p password ssh -tt -oStrictHostKeyChecking=no -oServerAliveInterval=120 [email protected] -p 2222 "echo password | sudo -S docker login -u=myuser -p='dockerpa#$%' dockerhub.com/docker-repo"

without the - because:

 -S          The -S (stdin) option causes sudo to read the password from
                the standard input instead of the terminal device.

Later edit: The issue is from docker login , as you use it will prompt for password, you should use:

sshpass -p password ssh -tt -oStrictHostKeyChecking=no -oServerAliveInterval=120 [email protected] -p 2222 "echo password | sudo -S echo 'dockerpa#$%' | docker login --username myuser -password-stdin dockerhub.com/docker-repo"

You can find an example for the non-interactive docker login in the documentation: https://docs.docker.com/engine/reference/commandline/login/