运行远程脚本

时间:2019-02-14 09:23:20

标签: shell unix ssh

我想通过crontab定期运行的机器A上的脚本A调用在机器B上运行脚本B。我自己不是Unix用户,在看了类似的问题之后,几件事让我感到困惑。

  1. 是否需要单引号,因为我看到它们有时被使用但有时未被使用。

    ssh user@host './path/foo.sh'
    ssh user@host foo.sh
    
  2. 如果我想使用变量,将可以正常工作:A.sh:

    path="some/path"
    ssh user@host @path/foo.sh
    

    还是我需要将它们用单引号引起来?

  3. 是否始终需要密码? how to run a script file remotely using ssh的答案根本没有提到密码,因此我想知道是否有需要密码的脚本类型和不需要密码的脚本类型。由于我的脚本必须按计划运行,因此我需要使身份验证过程自动化。我发现了几种涉及期望脚本,密钥对身份验证的解决方案。但是没有提到密码的some answers让我质疑是否完全需要密码。

1 个答案:

答案 0 :(得分:1)

  1. 仅当字符串包含特殊字符(尤其是空格)时,才需要单引号。 shell会逐字解释单引号内的所有内容。

  2. 使用$而不是@扩展变量,但是您不能在单引号中使用它,因此最好使用双引号。那些仍然可以防止空格,但是允许$扩展:

    path="some/path"
    ssh user@host "$path/foo.sh"
    
  3. ssh到远程计算机,通常可以使用密码或密钥对。对于自动化而言,密钥对几乎是您唯一的选择,因为您不想将密码以纯文本格式存储在任何地方,并且ssh使得无论如何都很难从文件中输入密码。