在远程Linux主机上执行本地脚本

时间:2013-08-01 18:15:05

标签: bash root host

我有一个本地脚本,在远程主机上没有root privs时无法运行。我编辑并允许sudoers文件从home目录(/ home / username / script)运行脚本。该脚本使用结果创建一个txt文件,但我将输出重定向到终端并将输出传递给本地计算机上的文本文件。

我不能“ssh user @ hostname sudo -Sv< script.sh> results.txt”因为这不会从远程主机运行脚本,特别是home目录。

有没有人知道将脚本复制到远程主机的方法(一行)&在检索输出时以root身份执行它?

感谢您的帮助

2 个答案:

答案 0 :(得分:12)

如果你有sudo,并允许sudo到root,那么这可以使用更少的语法:

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

答案 1 :(得分:2)

使用scp复制脚本,然后运行它。

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

要在一行中完成:

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

但是,如果您需要在sudo中输入密码,则无法使用此功能。所有ssh的标准输入都将被放入脚本中。可能有一种方法可以使用Expect执行此操作,但我没有太多专业知识。