Execute local script on remote Linux host

左心房为你撑大大i 提交于 2019-12-19 03:13:34

问题


I have a local script that will not run without root privs on the remote host. I have edited and allowed the sudoers file to run the script from the home dir (/home/username/script). The script creates a txt file with the results but I redirect the output to terminal and pipe the output to a text file on the local machine.

I cannot "ssh user@hostname sudo -Sv < script.sh > results.txt" because this will not run the script from the remote host, specifically the home dir.

Does anyone know of a way (one line) to copy the script to the remote host & execute it as root while retrieving the output?

Thank you for any assistance


回答1:


Copy the script with scp, then run it.

scp script.sh user@hostname:
ssh user@hostname sudo ./script.sh > results.txt

To do it in one line:

ssh user@hostname 'cat > script.sh; chmod 755 script.sh; sudo ./script.sh' < script.sh > results.txt

However, this won't work if you need to enter a password into sudo. All of ssh's stdin will be put in the script. There might be a way to do this using Expect, but I don't have much expertise there.




回答2:


if you have sudo, AND allowed to sudo to root, then this works with a bit less syntax:

ssh -T user@hostname 'sudo su -' < script.sh



来源:https://stackoverflow.com/questions/18001544/execute-local-script-on-remote-linux-host

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