代码之家  ›  专栏  ›  技术社区  ›  user1613253

OSX在Expect脚本中使用变量

  •  1
  • user1613253  · 技术社区  · 13 年前

    使用OSX,我想访问Expect中的$(pbpaste)。

    例如,这个别名连接到一个复制的ip地址(假设我在执行它之前复制了它),让我输入密码:

    alias s='ssh $(pbpaste) -l root'
    

    这个脚本将我连接到为我输入密码的脚本中列出的特定主机:

    #!/usr/bin/expect
    spawn  ssh hostname -l username
    expect "password:"
    send "secret\n"
    interact
    

    我想将$(pbpaste)合并到预期脚本中,以便访问复制的主机并为我输入密码。怎样

    顺便说一句,我知道ssh密钥,这通常是把密码放在纯文本中的糟糕形式。在我的情况下,这并不重要,也对我没有帮助——让上面的EXPECT脚本使用$(pbpaste)变量作为主机名对我来说更重要。

    此外,我希望能够将主机作为参数而不是$(pbpaste)传递。不过,这是最初问题的次要问题——每个问题一个脚本?或者,如果没有提供主机的参数,则默认为$(pbpaste)?哪个更容易写/理解。

    1 回复  |  直到 13 年前
        1
  •  0
  •   glenn jackman    13 年前

    我无法测试它,但这应该有效:

    spawn ssh [exec pbpaste] -l username
    

    或者使用命令行参数:

    #!/usr/bin/expect
    if {$argc == 0} {
      set hostname [exec pbpaste]
    } else {
      set hostname [lindex $argv 0]
    }
    spawn ssh $hostname -l username
    
    推荐文章