2013-08-01 291 views
5

我有一个本地脚本,它不会在远程主机上没有root权限的情况下运行。我已编辑并允许sudoers文件从主目录(/ home/username/script)运行脚本。该脚本创建一个包含结果的txt文件,但我将输出重定向到终端,并将输出传输到本地计算机上的文本文件。在远程Linux主机上执行本地脚本

我不能“SSH用户@主机名须藤-sV < script.sh> RESULTS.TXT”,因为这将不会运行从远程主机的脚本,特别是主目录。

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

谢谢你的任何援助

回答

2

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

scp script.sh [email protected]: 
ssh [email protected] sudo ./script.sh > results.txt 

要做到这一点的一条线:

ssh [email protected] 'cat > script.sh; chmod 755 script.sh; sudo ./script.sh' <script.sh> results.txt 

但是,如果你需要输入密码进入sudo这是不行的。所有的ssh的标准输入都会被放入脚本中。可能有一种方法可以使用Expect来做到这一点,但我没有太多的专业知识。

+0

感谢您的及时回复! ssh密钥没有存储,所以在scp'ing和ssh'ing时都需要输入14个字符的pswd。有没有办法一行一行呢? –

+0

我不需要为sudo输入密码(运行脚本)。这看起来似乎会很好!此外,非常感谢您的时间和帮助! –

+0

这不是一个正确的答案,它是关于远程运行命令,而不是推送到远程机器! – Rafareino

12

如果你有sudo的,并允许sudo来根,那么这个作品用少一点的语法:

ssh -T [email protected] 'sudo su -' < script.sh

+5

+1这应该是公认的答案。 –

相关问题