【问题标题】:OSX use a variable in Expect scriptOSX 在 Expect 脚本中使用变量
【发布时间】:2012-08-22 12:16:41
【问题描述】:

使用 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)?哪个更容易编写/理解。

【问题讨论】:

    标签: macos bash ssh alias expect


    【解决方案1】:

    我无法测试它,但这应该可以:

    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
    

    【讨论】:

    • 是的,效果很好。谢谢。我仍然想在调用脚本时将主机名作为参数传递。
    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    相关资源
    最近更新 更多