【问题标题】:ksh remote function calling another remote function3ksh 远程函数调用另一个远程函数3
【发布时间】:2021-11-07 04:03:44
【问题描述】:
#!/bin/ksh
set -x 

function test_me
{
set -x
date
}

function check_me 
{
set -x
ssh HST2 "$(typeset -f test_me); test_me"
}

ssh HST1 "$(typeset -f); check_me"

失败:syntax error at line 5: ;;'出乎意料的`可以帮忙吗?

我正在登录 Oracle RAC 集群。我在 RAC1A 的第一个节点上登录,然后在这个 RAC1 上的各个节点 RAC1B、RAC1C、RAC1D 上准备数据库列表。然后登录每个 RAC1B 并连接到 DB。 $HST1 和 $HST2 只是为了隐藏主机名,你可以放任何你喜欢的东西。 SATH ==> RAC1A ===> RAC1B。其中 HST1 是 RAC1A 而 HST2 是 RAC1B –

如果您有任何 3 个配对服务器,其中 ssh 密钥在 SATH ==> RAC1A ===> RAC1B 中推出,您可以测试上面的代码。 SATH ==> HST1 ===> HST2

【问题讨论】:

  • typeset -f 在本地机器上运行时会生成什么? $(typeset -f) 在本地机器上运行时会生成什么?另外,Fails with syntax error 发生在哪里......本地机器? 2号机?第三台机器?
  • 本地机器排版 -f .. 显示正确的定义。 HST1 也显示了正确的定义。只有 HST2 显示额外的 ; 并且失败并出现 ksh 语法错误行 5 `;;'出乎意料
  • 如果我用内部函数按字母顺序测试函数,那么它可以工作:` #!/bin/ksh set -x function a { set -x date } function b { set -x ssh HST2 "$ (typeset -fa); a" } ssh HST1 "$(typeset -f); b"`
  • 但是如果我以相反的字母顺序测试内部功能,那么它会失败:#!/bin/ksh set -x function b { set -x date } function a { set -x ssh HST2 "$(typeset -f b); b" } ssh HST1 "$(typeset -f); a"
  • 不确定它是否是 ksh 错误 .. 但取决于函数的字母顺序。

标签: linux unix ssh ksh


【解决方案1】:
#!/bin/ksh
set -x 

function a
{
set -x
date
}

function b
{
set -x
ssh HST2 "$(typeset -f a); a"
}

ssh HST1 "$(typeset -f); b"

上面的代码在内部函数按字母顺序升序的情况下可以正常工作..

【讨论】:

    【解决方案2】:
    #!/bin/ksh
    set -x 
    
    function b
    {
    set -x
    date
    }
    
    function a
    {
    set -x
    ssh HST2 "$(typeset -f b); b"
    }
    
    ssh HST1 "$(typeset -f); a"
    

    上面的代码在内部函数名称按字母顺序降序的情况下失败.. 在第 5 行出现语法错误失败:`;;'出乎意料

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 2013-11-10
      相关资源
      最近更新 更多