问题
I have the following
#!/bin/bash
USER='scott'
PASS='tiger'
ssh -t $USER@server006.web.com "sudo su - http"
This Works, but I was trying to get it to run a script afterwards, and if I do, using -c or <
The script does a grep like this:
grep -i "Exception:" /opt/local/server/logs/exceptions.log | grep -e "|*-*-*:*:*,*|" | tail -1 | awk -F'|' '{print $2}' >> log.log
This also works fine on it's own, but I need to be http to do it.
I cannot SCP the output of the script back to server001 either, so I'm stuck here,
Any ideas would be relay appreciated. Ben
回答1:
Try
ssh -t $USER@server006.web.com 'sudo -u http grep -i "Exception:" /opt/local/server/logs/exceptions.log | grep -e "|*-*-*:*:*,*|" | tail -1 | awk -F"|" "{print $2}" >> log.log'
Sudo already runs the command as a different user to there's no need to su again.
Only reason to do sudo su is to have a fast way to start a new shell with another user.
回答2:
You probably want sudo -u
instead of sudo su -
:
ssh -t $USER@server006.web.com sudo -u http script
回答3:
Guess I'm late to the party. My solution:
ssh -t $USER@server006.web.com "sudo cat /etc/shadow"
and replace cat /etc/shadow with your desired program.
来源:https://stackoverflow.com/questions/22812853/ssh-to-server-sudo-su-then-run-commands-in-bash