SSH to server, Sudo su - then run commands in bash [duplicate]

妖精的绣舞 提交于 2020-01-12 04:44:05

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!