我有一个本地脚本,在远程主机上没有root privs时无法运行。我编辑并允许sudoers文件从home目录(/ home / username / script)运行脚本。该脚本使用结果创建一个txt文件,但我将输出重定向到终端并将输出传递给本地计算机上的文本文件。
我不能“ssh user @ hostname sudo -Sv< script.sh> results.txt”因为这不会从远程主机运行脚本,特别是home目录。
有没有人知道将脚本复制到远程主机的方法(一行)&在检索输出时以root身份执行它?
感谢您的帮助
答案 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
执行此操作,但我没有太多专业知识。