【问题标题】:How to run a shell script over ssh with resource(.txt files) in one machine and the script in another machine?如何在一台机器上使用资源(.txt 文件)和另一台机器上的脚本在 ssh 上运行 shell 脚本?
【发布时间】:2014-02-14 00:39:35
【问题描述】:

我想使用 SSH 运行一个 shell 脚本,它从其他机器获取资源,而脚本在其他机器上,都在同一个网络上。我不想将资源复制到本地机器。

注意:shell 脚本以 .txt 文件作为输入

【问题讨论】:

  • 所以远程脚本必须将文本文件作为来自其他远程机器的输入。对吗?
  • @mario23 请编辑您的问题以添加您评论中的信息。

标签: linux ubuntu ssh server fedora


【解决方案1】:

我不完全理解你的问题。其他答案给出了“如何运行远程脚本?”

但我认为问题是远程脚本必须获取远程文件,即使我不确定

  1. 使用 ssh 登录远程 PC。
  2. 如果未安装,请安装sshfs
  3. 然后将包含您要在脚本中使用的文件的其他远程计算机目录挂载到本地目录。这可以使用sshfs 来完成
  4. 然后使用本地安装目录中的文件运行脚本
  5. 完成后卸载目录。

有点大的过程。

Mounting remote directory with sshfs

man sshfs

【讨论】:

    【解决方案2】:

    如果server1上有script.sh,server2有file.txt,可以通过ssh连接server1,然后:

    [user@server1]$ ssh user@server2 "cd mydir && cat file.txt" | ./script.sh
    

    【讨论】:

      【解决方案3】:

      如果您的脚本在机器 A 中,则您无法在机器 B 上运行它而不复制它。首先,使用 scp 将脚本复制到机器 B

      [user@machineA]$ scp /path/to/script user@machineB:/home/user/path
      

      然后,只需运行脚本

      [user@machineA]$ ssh user@machineB "/home/user/path/script"
      

      如果您已授予脚本可执行权限,这将起作用。

      试试这个..

      <hostA_shell_prompt>$ ssh user@hostB "ls -la"
      

      这将提示您输入密码,除非您已将 hostA 用户的公钥复制到用户 .ssh 目录主目录上的 authorized_keys 文件中。这将允许无密码身份验证(如果在 ssh 服务器的配置中被接受为身份验证方法)

      【讨论】:

        【解决方案4】:

        试试这个:

         ssh USER_NAME@HOST_ADDRESS "BASH_SCRIPT_FILE_PATH"
        

        您需要在需要时提供密码。

        【讨论】:

        • 这个有助于运行远程机器脚本。
        • 我认为这不是问题的确切答案。
        • 我已经检查过了,这似乎可以相应地工作。我们将脚本放在一台服务器上,然后在另一台机器上执行。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-24
        • 2016-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-09
        相关资源
        最近更新 更多