【问题标题】:Execute local script on remote Linux host在远程 Linux 主机上执行本地脚本
【发布时间】:2017-02-02 08:20:37
【问题描述】:

我有一个本地脚本,如果没有远程主机上的 root 权限,它将无法运行。我已经编辑并允许 sudoers 文件从主目录(/home/username/script)运行脚本。该脚本使用结果创建一个 txt 文件,但我将输出重定向到终端并将输出通过管道传输到本地计算机上的文本文件。

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

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

感谢您的帮助

【问题讨论】:

    标签: bash root host


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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 可能有一种方法可以做到这一点,但我没有太多的专业知识。

      【讨论】:

      • 感谢您的及时回复!未存储 ssh 密钥,因此我在 scp'ing 和 ssh'ing 时都需要输入 14 char pswd。有没有办法单线呢?
      • 我不需要为 sudo 输入密码(运行脚本)。这似乎会很好用!另外,非常感谢您的时间和帮助!
      • 这不是对问题的正确回答,它是关于远程运行命令,而不是推送到远程机器!
      • 问题的最后一行说将脚本复制到远程主机并执行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 2021-02-04
      • 2013-08-16
      • 2017-09-08
      • 1970-01-01
      • 2016-04-02
      相关资源
      最近更新 更多